diff options
| author | David Lönnhager <david.l@mullvad.net> | 2020-03-11 13:53:15 +0100 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2020-03-11 13:53:15 +0100 |
| commit | eaf1eabc7f0f2a63d583f1aba170065798cd3169 (patch) | |
| tree | 2965e1826affde6a7d34fc300ec30d457547463f /mullvad-cli | |
| parent | 6861a5039de26358e1e5fb7de94e66be3038de10 (diff) | |
| parent | 34353b1f65cae65d4f2f14861f7ef70fbe42e147 (diff) | |
| download | mullvadvpn-eaf1eabc7f0f2a63d583f1aba170065798cd3169.tar.xz mullvadvpn-eaf1eabc7f0f2a63d583f1aba170065798cd3169.zip | |
Merge branch 'beta-notifications'
Diffstat (limited to 'mullvad-cli')
| -rw-r--r-- | mullvad-cli/src/cmds/beta_program.rs | 54 | ||||
| -rw-r--r-- | mullvad-cli/src/cmds/mod.rs | 4 | ||||
| -rw-r--r-- | mullvad-cli/src/cmds/version.rs | 10 |
3 files changed, 67 insertions, 1 deletions
diff --git a/mullvad-cli/src/cmds/beta_program.rs b/mullvad-cli/src/cmds/beta_program.rs new file mode 100644 index 0000000000..c63027ccfd --- /dev/null +++ b/mullvad-cli/src/cmds/beta_program.rs @@ -0,0 +1,54 @@ +use crate::{new_rpc_client, Command, Result}; +use clap::value_t_or_exit; + +pub struct BetaProgram; + +impl Command for BetaProgram { + fn name(&self) -> &'static str { + "beta-program" + } + + fn clap_subcommand(&self) -> clap::App<'static, 'static> { + clap::SubCommand::with_name(self.name()) + .about("Receive notifications about beta updates") + .setting(clap::AppSettings::SubcommandRequiredElseHelp) + .subcommand( + clap::SubCommand::with_name("set") + .about("Change beta notifications setting") + .arg( + clap::Arg::with_name("policy") + .required(true) + .possible_values(&["on", "off"]), + ), + ) + .subcommand(clap::SubCommand::with_name("get").about("Get beta notifications setting")) + } + + fn run(&self, matches: &clap::ArgMatches<'_>) -> Result<()> { + match matches.subcommand() { + ("get", Some(_)) => { + let mut rpc = new_rpc_client()?; + let settings = rpc.get_settings()?; + let enabled_str = if settings.get_show_beta_releases().unwrap_or(false) { + "on" + } else { + "off" + }; + println!("Beta program: {}", enabled_str); + Ok(()) + } + ("set", Some(matches)) => { + let enabled_str = value_t_or_exit!(matches.value_of("policy"), String); + + let mut rpc = new_rpc_client()?; + rpc.set_show_beta_releases(enabled_str == "on")?; + + println!("Beta program: {}", enabled_str); + Ok(()) + } + _ => { + unreachable!("unhandled comand"); + } + } + } +} diff --git a/mullvad-cli/src/cmds/mod.rs b/mullvad-cli/src/cmds/mod.rs index a26b64be74..699b62ba1d 100644 --- a/mullvad-cli/src/cmds/mod.rs +++ b/mullvad-cli/src/cmds/mod.rs @@ -7,6 +7,9 @@ pub use self::account::Account; mod auto_connect; pub use self::auto_connect::AutoConnect; +mod beta_program; +pub use self::beta_program::BetaProgram; + mod block_when_disconnected; pub use self::block_when_disconnected::BlockWhenDisconnected; @@ -45,6 +48,7 @@ pub fn get_commands() -> HashMap<&'static str, Box<dyn Command>> { let commands: Vec<Box<dyn Command>> = vec