-
Notifications
You must be signed in to change notification settings - Fork 172
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(sozo): add model command back #2618
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -1,15 +1,12 @@ | ||||||||||||||||||
use std::fmt; | ||||||||||||||||||
use std::str::FromStr; | ||||||||||||||||||
|
||||||||||||||||||
use anyhow::{anyhow, Result}; | ||||||||||||||||||
use clap::Args; | ||||||||||||||||||
use dojo_types::naming; | ||||||||||||||||||
use dojo_utils::{Invoker, TxnConfig}; | ||||||||||||||||||
use dojo_world::contracts::naming::ensure_namespace; | ||||||||||||||||||
use scarb::core::Config; | ||||||||||||||||||
use sozo_ops::resource_descriptor::ResourceDescriptor; | ||||||||||||||||||
use sozo_scarbext::WorkspaceExt; | ||||||||||||||||||
use sozo_walnut::WalnutDebugger; | ||||||||||||||||||
use starknet::core::types::{Call, Felt}; | ||||||||||||||||||
use starknet::core::types::Call; | ||||||||||||||||||
use starknet::core::utils as snutils; | ||||||||||||||||||
use tracing::trace; | ||||||||||||||||||
|
||||||||||||||||||
|
@@ -26,7 +23,7 @@ | |||||||||||||||||
#[arg( | ||||||||||||||||||
help = "The address or the tag (ex: dojo_examples:actions) of the contract to be executed." | ||||||||||||||||||
)] | ||||||||||||||||||
pub tag_or_address: String, | ||||||||||||||||||
pub tag_or_address: ResourceDescriptor, | ||||||||||||||||||
|
||||||||||||||||||
#[arg(help = "The name of the entrypoint to be executed.")] | ||||||||||||||||||
pub entrypoint: String, | ||||||||||||||||||
|
@@ -63,14 +60,7 @@ | |||||||||||||||||
|
||||||||||||||||||
let profile_config = ws.load_profile_config()?; | ||||||||||||||||||
|
||||||||||||||||||
let descriptor = if utils::is_address(&self.tag_or_address) { | ||||||||||||||||||
ContractDescriptor::Address(Felt::from_str(&self.tag_or_address)?) | ||||||||||||||||||
} else { | ||||||||||||||||||
ContractDescriptor::Tag(ensure_namespace( | ||||||||||||||||||
&self.tag_or_address, | ||||||||||||||||||
&profile_config.namespace.default, | ||||||||||||||||||
)) | ||||||||||||||||||
}; | ||||||||||||||||||
let descriptor = self.tag_or_address.ensure_namespace(&profile_config.namespace.default); | ||||||||||||||||||
|
||||||||||||||||||
#[cfg(feature = "walnut")] | ||||||||||||||||||
let _walnut_debugger = WalnutDebugger::new_from_flag( | ||||||||||||||||||
|
@@ -93,11 +83,14 @@ | |||||||||||||||||
.await?; | ||||||||||||||||||
|
||||||||||||||||||
let contract_address = match &descriptor { | ||||||||||||||||||
ContractDescriptor::Address(address) => Some(*address), | ||||||||||||||||||
ContractDescriptor::Tag(tag) => { | ||||||||||||||||||
ResourceDescriptor::Address(address) => Some(*address), | ||||||||||||||||||
ResourceDescriptor::Tag(tag) => { | ||||||||||||||||||
let selector = naming::compute_selector_from_tag(tag); | ||||||||||||||||||
world_diff.get_contract_address(selector) | ||||||||||||||||||
} | ||||||||||||||||||
ResourceDescriptor::Name(_) => { | ||||||||||||||||||
unimplemented!("Expected to be a resolved tag with default namespace.") | ||||||||||||||||||
} | ||||||||||||||||||
Comment on lines
+91
to
+93
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ohayo, sensei! Replace Using Apply this diff to handle the error appropriately: ResourceDescriptor::Name(_) => {
- unimplemented!("Expected to be a resolved tag with default namespace.")
+ return Err(anyhow!(
+ "Unresolved resource descriptor: expected a resolved tag with default namespace."
+ ));
} 📝 Committable suggestion
Suggested change
|
||||||||||||||||||
} | ||||||||||||||||||
.ok_or_else(|| anyhow!("Contract {descriptor} not found in the world diff."))?; | ||||||||||||||||||
|
||||||||||||||||||
|
@@ -129,18 +122,3 @@ | |||||||||||||||||
}) | ||||||||||||||||||
} | ||||||||||||||||||
} | ||||||||||||||||||
|
||||||||||||||||||
#[derive(Debug)] | ||||||||||||||||||
pub enum ContractDescriptor { | ||||||||||||||||||
Address(Felt), | ||||||||||||||||||
Tag(String), | ||||||||||||||||||
} | ||||||||||||||||||
|
||||||||||||||||||
impl fmt::Display for ContractDescriptor { | ||||||||||||||||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { | ||||||||||||||||||
match self { | ||||||||||||||||||
ContractDescriptor::Address(address) => write!(f, "{:#066x}", address), | ||||||||||||||||||
ContractDescriptor::Tag(tag) => write!(f, "{}", tag), | ||||||||||||||||||
} | ||||||||||||||||||
} | ||||||||||||||||||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Handle
ResourceDescriptor::Name
to prevent runtime panicsOhayo sensei! Using
unimplemented!
for theResourceDescriptor::Name
variant will cause a panic if encountered at runtime. It's recommended to handle this variant properly or return a descriptive error to prevent unexpected crashes.Apply this diff to handle the variant:
📝 Committable suggestion