From 1b7e17b5be04dcdff706ff2569b29a164868f432 Mon Sep 17 00:00:00 2001 From: "Scott C. Livingston" Date: Sun, 15 Sep 2024 23:27:12 -0700 Subject: [PATCH] option to specify proxy command --- src/cli.rs | 31 ++++++++++++++++++++ tests/snapshots/cli__prints_help_config.snap | 3 +- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/cli.rs b/src/cli.rs index dc24c14..b94f439 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -474,6 +474,34 @@ fn config_subcommand(matches: &clap::ArgMatches) -> Result<(), CliError> { local_config.wdeployments[wd_index].image = Some(new_image.into()); + return match mgmt::modify_local(&local_config) { + Err(err) => CliError::new_std(err, 1), + Ok(()) => Ok(()), + }; + } else if let Some(new_command) = matches.value_of("cprovider_cmd") { + match local_config.wdeployments[wd_index].cprovider { + CProvider::Proxy => { + let parts: Vec<&str> = new_command.split(' ').collect(); + match parts[0] { + "rrhttp" => { + if parts.len() != 2 { + return CliError::new("Usage: rrhttp TARGET", 1); + } + } + _ => return CliError::new("unknown proxy command", 1), + }; + local_config.wdeployments[wd_index].cargs = + parts.iter().map(|x| x.to_string()).collect(); + } + _ => { + let errmessage = format!( + "cannot --assign-proxy-command for cprovider `{}`", + local_config.wdeployments[wd_index].cprovider + ); + return CliError::new(errmessage.as_str(), 1); + } + } + return match mgmt::modify_local(&local_config) { Err(err) => CliError::new_std(err, 1), Ok(()) => Ok(()), @@ -1151,6 +1179,9 @@ pub fn main() -> Result<(), CliError> { .long("assign-image") .value_name("IMG") .help("assign image for cprovider to use (advanced option)")) + .arg(Arg::with_name("cprovider_cmd") + .long("assign-proxy-command") + .value_name("CMD")) .arg(Arg::with_name("raw_device_path") .long("add-raw-device") .value_name("PATH") diff --git a/tests/snapshots/cli__prints_help_config.snap b/tests/snapshots/cli__prints_help_config.snap index 5911535..b71e021 100644 --- a/tests/snapshots/cli__prints_help_config.snap +++ b/tests/snapshots/cli__prints_help_config.snap @@ -1,6 +1,6 @@ --- source: tests/cli.rs -assertion_line: 59 +assertion_line: 56 expression: "String::from_utf8(output.stdout).unwrap()" --- hardshare-config @@ -25,6 +25,7 @@ OPTIONS: --cprovider select a container provider: lxd, docker, docker-rootless, podman, proxy + --assign-proxy-command --assign-image assign image for cprovider to use (advanced option)