diff --git a/crates/cargo-contract/src/cmd/remove.rs b/crates/cargo-contract/src/cmd/remove.rs index eefecddf0..8569c279b 100644 --- a/crates/cargo-contract/src/cmd/remove.rs +++ b/crates/cargo-contract/src/cmd/remove.rs @@ -62,7 +62,7 @@ impl RemoveCommand { .await?; let remove_result = remove_exec.remove_code().await?; let display_events = remove_result.display_events; - let output = if self.output_json() { + let output_events = if self.output_json() { display_events.to_json()? } else { display_events.display_events( @@ -70,13 +70,18 @@ impl RemoveCommand { remove_exec.token_metadata(), )? }; - println!("{output}"); if let Some(code_removed) = remove_result.code_removed { let remove_result = code_removed.code_hash; if self.output_json() { - println!("{}", &remove_result); + let json_object = serde_json::json!({ + "events": serde_json::from_str::(&output_events)?, + "removed_code_hash": remove_result, + }); + let json_object = serde_json::to_string_pretty(&json_object)?; + println!("{}", json_object); } else { + println!("{}", output_events); name_value_println!("Code hash", format!("{remove_result:?}")); } Result::<(), ErrorVariant>::Ok(()) diff --git a/crates/cargo-contract/src/cmd/upload.rs b/crates/cargo-contract/src/cmd/upload.rs index 293ba0013..f974008d7 100644 --- a/crates/cargo-contract/src/cmd/upload.rs +++ b/crates/cargo-contract/src/cmd/upload.rs @@ -88,7 +88,7 @@ impl UploadCommand { } else { let upload_result = upload_exec.upload_code().await?; let display_events = upload_result.display_events; - let output = if self.output_json() { + let output_events = if self.output_json() { display_events.to_json()? } else { display_events.display_events( @@ -96,15 +96,17 @@ impl UploadCommand { upload_exec.token_metadata(), )? }; - println!("{output}"); if let Some(code_stored) = upload_result.code_stored { - let upload_result = CodeHashResult { - code_hash: format!("{:?}", code_stored.code_hash), - }; + let code_hash = code_stored.code_hash; if self.output_json() { - println!("{}", upload_result.to_json()?); + let json_object = serde_json::json!({ + "events": serde_json::from_str::(&output_events)?, + "code_hash": code_hash, + }); + println!("{}", serde_json::to_string_pretty(&json_object)?); } else { - upload_result.print(); + println!("{}", output_events); + name_value_println!("Code hash", format!("{:?}", code_hash)); } } else { let code_hash = hex::encode(code_hash); @@ -118,21 +120,6 @@ impl UploadCommand { } } -#[derive(serde::Serialize)] -pub struct CodeHashResult { - pub code_hash: String, -} - -impl CodeHashResult { - pub fn to_json(&self) -> Result { - Ok(serde_json::to_string_pretty(self)?) - } - - pub fn print(&self) { - name_value_println!("Code hash", format!("{:?}", self.code_hash)); - } -} - #[derive(serde::Serialize)] pub struct UploadDryRunResult { pub result: String,