diff --git a/cmd/soroban-cli/src/commands/contract/asset.rs b/cmd/soroban-cli/src/commands/contract/asset.rs index edf077a7c..ce10602c7 100644 --- a/cmd/soroban-cli/src/commands/contract/asset.rs +++ b/cmd/soroban-cli/src/commands/contract/asset.rs @@ -1,3 +1,5 @@ +use crate::commands::global; + use super::{deploy, id}; #[derive(Debug, clap::Subcommand)] @@ -17,10 +19,10 @@ pub enum Error { } impl Cmd { - pub async fn run(&self) -> Result<(), Error> { + pub async fn run(&self, global_args: &global::Args) -> Result<(), Error> { match &self { Cmd::Id(id) => id.run()?, - Cmd::Deploy(asset) => asset.run().await?, + Cmd::Deploy(asset) => asset.run(global_args).await?, } Ok(()) } diff --git a/cmd/soroban-cli/src/commands/contract/deploy.rs b/cmd/soroban-cli/src/commands/contract/deploy.rs index 3e6dcf3ea..2d67a2161 100644 --- a/cmd/soroban-cli/src/commands/contract/deploy.rs +++ b/cmd/soroban-cli/src/commands/contract/deploy.rs @@ -23,7 +23,7 @@ pub enum Error { impl Cmd { pub async fn run(&self, global_args: &global::Args) -> Result<(), Error> { match &self { - Cmd::Asset(asset) => asset.run().await?, + Cmd::Asset(asset) => asset.run(global_args).await?, Cmd::Wasm(wasm) => wasm.run(global_args).await?, } Ok(()) diff --git a/cmd/soroban-cli/src/commands/contract/deploy/asset.rs b/cmd/soroban-cli/src/commands/contract/deploy/asset.rs index 8c4419277..c8133b5f5 100644 --- a/cmd/soroban-cli/src/commands/contract/deploy/asset.rs +++ b/cmd/soroban-cli/src/commands/contract/deploy/asset.rs @@ -1,4 +1,5 @@ use crate::config::locator; +use crate::print::Print; use crate::xdr::{ Asset, ContractDataDurability, ContractExecutable, ContractIdPreimage, CreateContractArgs, Error as XdrError, Hash, HostFunction, InvokeHostFunctionOp, LedgerKey::ContractData, @@ -73,7 +74,7 @@ pub struct Cmd { } impl Cmd { - pub async fn run(&self) -> Result<(), Error> { + pub async fn run(&self, global_args: &global::Args) -> Result<(), Error> { let res = self.run_against_rpc_server(None, None).await?.to_envelope(); match res { TxnEnvelopeResult::TxnEnvelope(tx) => println!("{}", tx.to_xdr_base64(Limits::none())?), @@ -81,6 +82,17 @@ impl Cmd { let network = self.config.get_network()?; if let Some(alias) = self.alias.clone() { + if let Some(existing_contract) = self + .config + .locator + .get_contract_id(&alias, &network.network_passphrase)? + { + let print = Print::new(global_args.quiet); + print.warnln(format!( + "Overwriting existing contract id: {existing_contract}" + )); + }; + self.config.locator.save_contract_id( &network.network_passphrase, &contract, diff --git a/cmd/soroban-cli/src/commands/contract/deploy/wasm.rs b/cmd/soroban-cli/src/commands/contract/deploy/wasm.rs index 9bd8fed68..14db36e00 100644 --- a/cmd/soroban-cli/src/commands/contract/deploy/wasm.rs +++ b/cmd/soroban-cli/src/commands/contract/deploy/wasm.rs @@ -138,6 +138,17 @@ impl Cmd { let network = self.config.get_network()?; if let Some(alias) = self.alias.clone() { + if let Some(existing_contract) = self + .config + .locator + .get_contract_id(&alias, &network.network_passphrase)? + { + let print = Print::new(global_args.quiet); + print.warnln(format!( + "Overwriting existing contract id: {existing_contract}" + )); + }; + self.config.locator.save_contract_id( &network.network_passphrase, &contract, diff --git a/cmd/soroban-cli/src/commands/contract/mod.rs b/cmd/soroban-cli/src/commands/contract/mod.rs index 42792a70d..40b8dcd4b 100644 --- a/cmd/soroban-cli/src/commands/contract/mod.rs +++ b/cmd/soroban-cli/src/commands/contract/mod.rs @@ -144,7 +144,7 @@ pub enum Error { impl Cmd { pub async fn run(&self, global_args: &global::Args) -> Result<(), Error> { match &self { - Cmd::Asset(asset) => asset.run().await?, + Cmd::Asset(asset) => asset.run(global_args).await?, Cmd::Bindings(bindings) => bindings.run().await?, Cmd::Build(build) => build.run(global_args)?, Cmd::Extend(extend) => extend.run().await?,