From cb287e9ce14796373b539d1f3a71474d865d9361 Mon Sep 17 00:00:00 2001 From: Max Date: Tue, 20 Sep 2022 10:08:16 +0200 Subject: [PATCH 1/2] Factor out common code --- src/dfx/src/lib/sns/create_config.rs | 42 ++++++++-------------------- 1 file changed, 11 insertions(+), 31 deletions(-) diff --git a/src/dfx/src/lib/sns/create_config.rs b/src/dfx/src/lib/sns/create_config.rs index f2f0fb07c7..97a1638c1e 100644 --- a/src/dfx/src/lib/sns/create_config.rs +++ b/src/dfx/src/lib/sns/create_config.rs @@ -1,40 +1,20 @@ -use anyhow::{anyhow, Context}; +//! Code for executing `dfx sns config create` use fn_error_context::context; +use std::ffi::OsString; use std::path::Path; -use std::process::{self, Command}; use crate::lib::error::DfxResult; +use crate::lib::sns::sns_cli::call_sns_cli; use crate::Environment; +/// Executes `dfx sns config create` #[context("Failed to create sns config at {}.", path.display())] pub fn create_config(env: &dyn Environment, path: &Path) -> DfxResult { - let cli_name = "sns"; - let sns_cli = env - .get_cache() - .get_binary_command_path(cli_name) - .with_context(|| format!("Could not find bundled binary '{cli_name}'."))?; - let mut command = Command::new(sns_cli); - command - .arg("init-config-file") - .arg("--init-config-file-path") - .arg(path) - .arg("new"); - command - .stdin(process::Stdio::null()) - .output() - .map_err(anyhow::Error::from) - .and_then(|output| { - if output.status.success() { - Ok(()) - } else { - Err(anyhow!( - "Failed to create an SNS configuration.\n{:?} {:?}\nStdout:\n{:?}\n\nStderr:\n{:?}", - command.get_program(), - command.get_args(), - String::from_utf8_lossy(&output.stdout), - String::from_utf8_lossy(&output.stderr) - )) - } - })?; - Ok(()) + let args = vec![ + OsString::from("init-config-file"), + OsString::from("--init-config-file-path"), + OsString::from(path), + OsString::from("new"), + ]; + call_sns_cli(env, &args).map(|_| format!("SNS config file is valid: {}", path.display())) } From 8d1fd20c0143e18977fdd7713510b5189bcc70c0 Mon Sep 17 00:00:00 2001 From: Max Date: Tue, 20 Sep 2022 10:18:46 +0200 Subject: [PATCH 2/2] Tweak --- src/dfx/src/lib/sns/create_config.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/dfx/src/lib/sns/create_config.rs b/src/dfx/src/lib/sns/create_config.rs index 97a1638c1e..d98973f6fc 100644 --- a/src/dfx/src/lib/sns/create_config.rs +++ b/src/dfx/src/lib/sns/create_config.rs @@ -16,5 +16,6 @@ pub fn create_config(env: &dyn Environment, path: &Path) -> DfxResult { OsString::from(path), OsString::from("new"), ]; - call_sns_cli(env, &args).map(|_| format!("SNS config file is valid: {}", path.display())) + call_sns_cli(env, &args)?; + Ok(()) }