summaryrefslogtreecommitdiffhomepage
path: root/mullvad-cli
diff options
context:
space:
mode:
Diffstat (limited to 'mullvad-cli')
-rw-r--r--mullvad-cli/src/cmds/beta_program.rs54
-rw-r--r--mullvad-cli/src/cmds/mod.rs4
-rw-r--r--mullvad-cli/src/cmds/version.rs10
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![
Box::new(Account),
Box::new(AutoConnect),
+ Box::new(BetaProgram),
Box::new(BlockWhenDisconnected),
Box::new(Bridge),
Box::new(Connect),
diff --git a/mullvad-cli/src/cmds/version.rs b/mullvad-cli/src/cmds/version.rs
index ad0df0ad0c..2acde8f76f 100644
--- a/mullvad-cli/src/cmds/version.rs
+++ b/mullvad-cli/src/cmds/version.rs
@@ -18,7 +18,15 @@ impl Command for Version {
println!("Current version: {}", current_version);
let version_info = rpc.get_version_info()?;
println!("\tIs supported: {}", version_info.current_is_supported);
- println!("\tIs up to date: {}", !version_info.current_is_outdated);
+
+ let settings = rpc.get_settings()?;
+ let is_updated = if settings.get_show_beta_releases().unwrap_or(false) {
+ version_info.latest == current_version
+ } else {
+ version_info.latest_stable == current_version
+ };
+ println!("\tIs up to date: {}", is_updated);
+
if version_info.latest_stable != version_info.latest {
println!(
"Latest version: {} (latest stable: {})",