From 75e6f93bed24b5658d6893cb421b39c97c15d285 Mon Sep 17 00:00:00 2001 From: Ammar Arif Date: Tue, 10 Sep 2024 11:00:00 -0400 Subject: [PATCH] put all under feature flag --- bin/sozo/Cargo.toml | 6 ++++-- bin/sozo/src/commands/auth.rs | 7 ++++++ bin/sozo/src/commands/execute.rs | 3 +++ bin/sozo/src/commands/register.rs | 3 +++ crates/sozo/ops/Cargo.toml | 3 ++- crates/sozo/ops/src/auth.rs | 13 +++++++---- crates/sozo/ops/src/execute.rs | 4 +++- crates/sozo/ops/src/migration/auto_auth.rs | 25 +++++++++++++++++++--- crates/sozo/ops/src/migration/mod.rs | 6 ++++++ crates/sozo/ops/src/register.rs | 4 +++- crates/sozo/ops/src/test_utils/setup.rs | 1 + crates/sozo/ops/src/tests/auth.rs | 6 ++++++ crates/sozo/ops/src/tests/migration.rs | 13 +++++++++-- crates/sozo/ops/src/tests/model.rs | 1 + crates/sozo/ops/src/utils.rs | 4 +++- 15 files changed, 84 insertions(+), 15 deletions(-) diff --git a/bin/sozo/Cargo.toml b/bin/sozo/Cargo.toml index 08c2206240..d4d76588df 100644 --- a/bin/sozo/Cargo.toml +++ b/bin/sozo/Cargo.toml @@ -51,7 +51,7 @@ serde.workspace = true serde_json.workspace = true smol_str.workspace = true sozo-ops.workspace = true -sozo-walnut.workspace = true +sozo-walnut = { workspace = true, optional = true } starknet.workspace = true starknet-crypto.workspace = true thiserror.workspace = true @@ -71,5 +71,7 @@ katana-runner.workspace = true snapbox = "0.4.6" [features] +default = [ "controller", "walnut" ] + controller = [ "dep:account_sdk", "dep:reqwest", "dep:slot" ] -default = [ "controller" ] +walnut = [ "dep:sozo-walnut" ] diff --git a/bin/sozo/src/commands/auth.rs b/bin/sozo/src/commands/auth.rs index 4d5ce2d14d..0c98c0de4a 100644 --- a/bin/sozo/src/commands/auth.rs +++ b/bin/sozo/src/commands/auth.rs @@ -5,6 +5,7 @@ use dojo_world::metadata::get_default_namespace_from_ws; use scarb::core::Config; use scarb_ui::Ui; use sozo_ops::auth; +#[cfg(feature = "walnut")] use sozo_walnut::WalnutDebugger; use tracing::trace; @@ -152,6 +153,7 @@ pub async fn grant( let world = utils::world_from_env_metadata(world, account, &starknet, &env_metadata, config).await?; + #[cfg(feature = "walnut")] let walnut_debugger = WalnutDebugger::new_from_flag(transaction.walnut, starknet.url(env_metadata.as_ref())?); @@ -167,6 +169,7 @@ pub async fn grant( &models_contracts, &transaction.into(), default_namespace, + #[cfg(feature = "walnut")] &walnut_debugger, ) .await @@ -182,6 +185,7 @@ pub async fn grant( &owners_resources, &transaction.into(), default_namespace, + #[cfg(feature = "walnut")] &walnut_debugger, ) .await @@ -205,6 +209,7 @@ pub async fn revoke( let world = utils::world_from_env_metadata(world, account, &starknet, &env_metadata, config).await?; + #[cfg(feature = "walnut")] let walnut_debugger = WalnutDebugger::new_from_flag(transaction.walnut, starknet.url(env_metadata.as_ref())?); @@ -220,6 +225,7 @@ pub async fn revoke( &models_contracts, &transaction.into(), default_namespace, + #[cfg(feature = "walnut")] &walnut_debugger, ) .await @@ -235,6 +241,7 @@ pub async fn revoke( &owners_resources, &transaction.into(), default_namespace, + #[cfg(feature = "walnut")] &walnut_debugger, ) .await diff --git a/bin/sozo/src/commands/execute.rs b/bin/sozo/src/commands/execute.rs index 871e7c7da4..a0ee15de56 100644 --- a/bin/sozo/src/commands/execute.rs +++ b/bin/sozo/src/commands/execute.rs @@ -4,6 +4,7 @@ use dojo_world::contracts::naming::ensure_namespace; use dojo_world::metadata::get_default_namespace_from_ws; use scarb::core::Config; use sozo_ops::execute; +#[cfg(feature = "walnut")] use sozo_walnut::WalnutDebugger; use tracing::trace; @@ -62,6 +63,7 @@ impl ExecuteArgs { ensure_namespace(&self.tag_or_address, &default_namespace) }; + #[cfg(feature = "walnut")] let walnut_debugger = WalnutDebugger::new_from_flag( self.transaction.walnut, self.starknet.url(env_metadata.as_ref())?, @@ -99,6 +101,7 @@ impl ExecuteArgs { calldata, &world, &tx_config, + #[cfg(feature = "walnut")] &walnut_debugger, ) .await diff --git a/bin/sozo/src/commands/register.rs b/bin/sozo/src/commands/register.rs index d1a0496b29..d320ed65d8 100644 --- a/bin/sozo/src/commands/register.rs +++ b/bin/sozo/src/commands/register.rs @@ -3,6 +3,7 @@ use clap::{Args, Subcommand}; use dojo_world::contracts::WorldContractReader; use scarb::core::Config; use sozo_ops::register; +#[cfg(feature = "walnut")] use sozo_walnut::WalnutDebugger; use starknet::accounts::ConnectedAccount; use starknet::core::types::{BlockId, BlockTag, Felt}; @@ -59,6 +60,7 @@ impl RegisterArgs { let world_address = world.world_address.unwrap_or_default(); trace!(?world_address, "Using world address."); + #[cfg(feature = "walnut")] let walnut_debugger = WalnutDebugger::new_from_flag(transaction.walnut, starknet.url(env_metadata.as_ref())?); @@ -77,6 +79,7 @@ impl RegisterArgs { world_reader, world_address, config, + #[cfg(feature = "walnut")] &walnut_debugger, ) .await diff --git a/crates/sozo/ops/Cargo.toml b/crates/sozo/ops/Cargo.toml index c9fd104948..a3ff511a4a 100644 --- a/crates/sozo/ops/Cargo.toml +++ b/crates/sozo/ops/Cargo.toml @@ -43,6 +43,7 @@ serde.workspace = true serde_json.workspace = true serde_with.workspace = true smol_str.workspace = true +sozo-walnut = { workspace = true, optional = true } starknet.workspace = true starknet-crypto.workspace = true thiserror.workspace = true @@ -50,7 +51,6 @@ tokio.workspace = true toml.workspace = true tracing.workspace = true url.workspace = true -sozo-walnut.workspace = true dojo-test-utils = { workspace = true, features = [ "build-examples" ], optional = true } katana-runner = { workspace = true, optional = true } @@ -64,3 +64,4 @@ tee = "0.1.0" [features] test-utils = [ "dep:dojo-test-utils", "dep:katana-runner" ] +walnut = [ "dep:sozo-walnut" ] diff --git a/crates/sozo/ops/src/auth.rs b/crates/sozo/ops/src/auth.rs index 10658c3332..899540aefa 100644 --- a/crates/sozo/ops/src/auth.rs +++ b/crates/sozo/ops/src/auth.rs @@ -9,6 +9,7 @@ use dojo_world::contracts::naming::{ use dojo_world::contracts::world::WorldContract; use dojo_world::contracts::WorldContractReader; use scarb_ui::Ui; +#[cfg(feature = "walnut")] use sozo_walnut::WalnutDebugger; use starknet::accounts::{Account, ConnectedAccount}; use starknet::core::types::{BlockId, BlockTag, Felt}; @@ -111,7 +112,7 @@ pub async fn grant_writer<'a, A>( new_writers: &[ResourceWriter], txn_config: &TxnConfig, default_namespace: &str, - walnut_debugger: &Option, + #[cfg(feature = "walnut")] walnut_debugger: &Option, ) -> Result<()> where A: ConnectedAccount + Sync + Send, @@ -143,6 +144,7 @@ where res, txn_config.wait, txn_config.receipt, + #[cfg(feature = "walnut")] walnut_debugger, ) .await?; @@ -157,7 +159,7 @@ pub async fn grant_owner( new_owners: &[ResourceOwner], txn_config: &TxnConfig, default_namespace: &str, - walnut_debugger: &Option, + #[cfg(feature = "walnut")] walnut_debugger: &Option, ) -> Result<()> where A: ConnectedAccount + Sync + Send + 'static, @@ -185,6 +187,7 @@ where res, txn_config.wait, txn_config.receipt, + #[cfg(feature = "walnut")] walnut_debugger, ) .await?; @@ -198,7 +201,7 @@ pub async fn revoke_writer( new_writers: &[ResourceWriter], txn_config: &TxnConfig, default_namespace: &str, - walnut_debugger: &Option, + #[cfg(feature = "walnut")] walnut_debugger: &Option, ) -> Result<()> where A: ConnectedAccount + Sync + Send + 'static, @@ -229,6 +232,7 @@ where res, txn_config.wait, txn_config.receipt, + #[cfg(feature = "walnut")] walnut_debugger, ) .await?; @@ -243,7 +247,7 @@ pub async fn revoke_owner( new_owners: &[ResourceOwner], txn_config: &TxnConfig, default_namespace: &str, - walnut_debugger: &Option, + #[cfg(feature = "walnut")] walnut_debugger: &Option, ) -> Result<()> where A: ConnectedAccount + Sync + Send + 'static, @@ -269,6 +273,7 @@ where res, txn_config.wait, txn_config.receipt, + #[cfg(feature = "walnut")] walnut_debugger, ) .await?; diff --git a/crates/sozo/ops/src/execute.rs b/crates/sozo/ops/src/execute.rs index b5c93bf33f..4a55d87797 100644 --- a/crates/sozo/ops/src/execute.rs +++ b/crates/sozo/ops/src/execute.rs @@ -2,6 +2,7 @@ use anyhow::{Context, Result}; use dojo_utils::{TransactionExt, TxnConfig}; use dojo_world::contracts::world::WorldContract; use scarb_ui::Ui; +#[cfg(feature = "walnut")] use sozo_walnut::WalnutDebugger; use starknet::accounts::{Call, ConnectedAccount}; use starknet::core::types::Felt; @@ -16,7 +17,7 @@ pub async fn execute( calldata: Vec, world: &WorldContract, txn_config: &TxnConfig, - walnut_debugger: &Option, + #[cfg(feature = "walnut")] walnut_debugger: &Option, ) -> Result<()> where A: ConnectedAccount + Sync + Send + 'static, @@ -39,6 +40,7 @@ where res, txn_config.wait, txn_config.receipt, + #[cfg(feature = "walnut")] walnut_debugger, ) .await diff --git a/crates/sozo/ops/src/migration/auto_auth.rs b/crates/sozo/ops/src/migration/auto_auth.rs index 53bd81a15d..7e06d76603 100644 --- a/crates/sozo/ops/src/migration/auto_auth.rs +++ b/crates/sozo/ops/src/migration/auto_auth.rs @@ -2,6 +2,7 @@ use anyhow::Result; use dojo_utils::TxnConfig; use dojo_world::contracts::WorldContract; use scarb::core::Workspace; +#[cfg(feature = "walnut")] use sozo_walnut::WalnutDebugger; use starknet::accounts::ConnectedAccount; @@ -14,7 +15,7 @@ pub async fn auto_authorize( default_namespace: &str, grant: &[ResourceWriter], revoke: &[ResourceWriter], - walnut_debugger: &Option, + #[cfg(feature = "walnut")] walnut_debugger: &Option, ) -> Result<()> where A: ConnectedAccount + Sync + Send + 'static, @@ -22,8 +23,26 @@ where { let ui = ws.config().ui(); - grant_writer(&ui, world, grant, txn_config, default_namespace, walnut_debugger).await?; - revoke_writer(&ui, world, revoke, txn_config, default_namespace, walnut_debugger).await?; + grant_writer( + &ui, + world, + grant, + txn_config, + default_namespace, + #[cfg(feature = "walnut")] + walnut_debugger, + ) + .await?; + revoke_writer( + &ui, + world, + revoke, + txn_config, + default_namespace, + #[cfg(feature = "walnut")] + walnut_debugger, + ) + .await?; Ok(()) } diff --git a/crates/sozo/ops/src/migration/mod.rs b/crates/sozo/ops/src/migration/mod.rs index a85a8baa9d..bf94b8119c 100644 --- a/crates/sozo/ops/src/migration/mod.rs +++ b/crates/sozo/ops/src/migration/mod.rs @@ -10,6 +10,7 @@ use dojo_world::metadata::get_default_namespace_from_ws; use dojo_world::migration::world::WorldDiff; use dojo_world::migration::{DeployOutput, UpgradeOutput}; use scarb::core::Workspace; +#[cfg(feature = "walnut")] use sozo_walnut::WalnutDebugger; use starknet::accounts::{Call, ConnectedAccount, ExecutionEncoding, SingleOwnerAccount}; use starknet::core::types::{BlockId, BlockTag, Felt, InvokeTransactionResult}; @@ -135,6 +136,8 @@ where A::SignError: 'static, { let ui = ws.config().ui(); + + #[cfg(feature = "walnut")] let walnut_debugger = WalnutDebugger::new_from_flag(txn_config.walnut, Url::parse(&rpc_url).unwrap()); @@ -219,6 +222,7 @@ where Ok(None) } else { + #[cfg(feature = "walnut")] if txn_config.walnut { WalnutDebugger::check_api_key()?; } @@ -283,6 +287,7 @@ where &default_namespace, &grant, &revoke, + #[cfg(feature = "walnut")] &walnut_debugger, ) .await @@ -373,6 +378,7 @@ where } } + #[cfg(feature = "walnut")] if let Some(walnut_debugger) = &walnut_debugger { walnut_debugger.verify_migration_strategy(ws, &strategy).await?; } diff --git a/crates/sozo/ops/src/register.rs b/crates/sozo/ops/src/register.rs index 9b114656b9..3897489bc5 100644 --- a/crates/sozo/ops/src/register.rs +++ b/crates/sozo/ops/src/register.rs @@ -6,6 +6,7 @@ use dojo_world::contracts::model::ModelReader; use dojo_world::contracts::{WorldContract, WorldContractReader}; use dojo_world::manifest::DeploymentManifest; use scarb::core::Config; +#[cfg(feature = "walnut")] use sozo_walnut::WalnutDebugger; use starknet::accounts::ConnectedAccount; use starknet::core::types::Felt; @@ -20,7 +21,7 @@ pub async fn model_register( world_reader: WorldContractReader

, world_address: Felt, config: &Config, - walnut_debugger: &Option, + #[cfg(feature = "walnut")] walnut_debugger: &Option, ) -> Result<()> where A: ConnectedAccount + Sync + Send + 'static, @@ -78,6 +79,7 @@ where res, txn_config.wait, txn_config.receipt, + #[cfg(feature = "walnut")] walnut_debugger, ) .await?; diff --git a/crates/sozo/ops/src/test_utils/setup.rs b/crates/sozo/ops/src/test_utils/setup.rs index e7a9fd9638..3ea1d53d0f 100644 --- a/crates/sozo/ops/src/test_utils/setup.rs +++ b/crates/sozo/ops/src/test_utils/setup.rs @@ -155,6 +155,7 @@ pub async fn setup( &default_namespace, &grant, &revoke, + #[cfg(feature = "walnut")] &None, ) .await?; diff --git a/crates/sozo/ops/src/tests/auth.rs b/crates/sozo/ops/src/tests/auth.rs index f25e8b568c..38aaf0ee4b 100644 --- a/crates/sozo/ops/src/tests/auth.rs +++ b/crates/sozo/ops/src/tests/auth.rs @@ -65,6 +65,7 @@ async fn auth_grant_writer_ok() { &get_resource_writers(), &TxnConfig { wait: true, ..Default::default() }, DEFAULT_NAMESPACE, + #[cfg(feature = "walnut")] &None, ) .await @@ -90,6 +91,7 @@ async fn auth_revoke_writer_ok() { &get_resource_writers(), &TxnConfig { wait: true, ..Default::default() }, DEFAULT_NAMESPACE, + #[cfg(feature = "walnut")] &None, ) .await @@ -103,6 +105,7 @@ async fn auth_revoke_writer_ok() { &get_resource_writers(), &TxnConfig { wait: true, ..Default::default() }, DEFAULT_NAMESPACE, + #[cfg(feature = "walnut")] &None, ) .await @@ -141,6 +144,7 @@ async fn auth_grant_owner_ok() { &get_resource_owners(other_account), &TxnConfig { wait: true, ..Default::default() }, DEFAULT_NAMESPACE, + #[cfg(feature = "walnut")] &None, ) .await @@ -175,6 +179,7 @@ async fn auth_revoke_owner_ok() { &get_resource_owners(default_account), &TxnConfig { wait: true, ..Default::default() }, DEFAULT_NAMESPACE, + #[cfg(feature = "walnut")] &None, ) .await @@ -204,6 +209,7 @@ async fn execute_spawn( vec![], world, &TxnConfig::init_wait(), + #[cfg(feature = "walnut")] &None, ) .await; diff --git a/crates/sozo/ops/src/tests/migration.rs b/crates/sozo/ops/src/tests/migration.rs index 41ffbdb2fb..8dac034b65 100644 --- a/crates/sozo/ops/src/tests/migration.rs +++ b/crates/sozo/ops/src/tests/migration.rs @@ -387,8 +387,17 @@ async fn migrate_with_auto_authorize() { .await .unwrap(); - let res = - auto_authorize(&ws, &world, &txn_config, &default_namespace, &grant, &revoke, &None).await; + let res = auto_authorize( + &ws, + &world, + &txn_config, + &default_namespace, + &grant, + &revoke, + #[cfg(feature = "walnut")] + &None, + ) + .await; assert!(res.is_ok()); let provider = sequencer.provider(); diff --git a/crates/sozo/ops/src/tests/model.rs b/crates/sozo/ops/src/tests/model.rs index 6da9e2bfee..4e44973261 100644 --- a/crates/sozo/ops/src/tests/model.rs +++ b/crates/sozo/ops/src/tests/model.rs @@ -171,6 +171,7 @@ async fn test_model_ops() { vec![], &WorldContract::new(world.address, sequencer.account(0)), &TxnConfig::init_wait(), + #[cfg(feature = "walnut")] &None, ) .await; diff --git a/crates/sozo/ops/src/utils.rs b/crates/sozo/ops/src/utils.rs index 72c87530ae..61d9c1d04e 100644 --- a/crates/sozo/ops/src/utils.rs +++ b/crates/sozo/ops/src/utils.rs @@ -5,6 +5,7 @@ use dojo_world::contracts::naming::get_name_from_tag; use dojo_world::contracts::world::{WorldContract, WorldContractReader}; use dojo_world::migration::strategy::generate_salt; use scarb_ui::Ui; +#[cfg(feature = "walnut")] use sozo_walnut::WalnutDebugger; use starknet::accounts::ConnectedAccount; use starknet::core::types::{BlockId, BlockTag, ExecutionResult, Felt, InvokeTransactionResult}; @@ -86,7 +87,7 @@ pub async fn handle_transaction_result

( transaction_result: InvokeTransactionResult, wait_for_tx: bool, show_receipt: bool, - walnut_debugger: &Option, + #[cfg(feature = "walnut")] walnut_debugger: &Option, ) -> Result<()> where P: Provider + Send, @@ -110,6 +111,7 @@ where } }; + #[cfg(feature = "walnut")] if let Some(walnut_debugger) = walnut_debugger { walnut_debugger.debug_transaction(ui, &transaction_result.transaction_hash)?; }