mirror of https://github.com/dswd/vpncloud.git
Support for creating shell completions
This commit is contained in:
parent
e6f10929b7
commit
285940c60a
|
@ -4,6 +4,7 @@ This project follows [semantic versioning](http://semver.org).
|
||||||
|
|
||||||
### UNRELEASED
|
### UNRELEASED
|
||||||
|
|
||||||
|
- [added] Support for creating shell completions
|
||||||
- [removed] Removed dummy device type
|
- [removed] Removed dummy device type
|
||||||
- [changed] Updated depdendencies
|
- [changed] Updated depdendencies
|
||||||
- [changed] Changed Rust version to 1.49.0
|
- [changed] Changed Rust version to 1.49.0
|
||||||
|
|
|
@ -10,6 +10,7 @@ use std::{
|
||||||
net::{IpAddr, Ipv6Addr, SocketAddr}
|
net::{IpAddr, Ipv6Addr, SocketAddr}
|
||||||
};
|
};
|
||||||
use structopt::StructOpt;
|
use structopt::StructOpt;
|
||||||
|
use structopt::clap::Shell;
|
||||||
|
|
||||||
|
|
||||||
pub const DEFAULT_PEER_TIMEOUT: u16 = 300;
|
pub const DEFAULT_PEER_TIMEOUT: u16 = 300;
|
||||||
|
@ -325,7 +326,7 @@ pub struct Args {
|
||||||
pub mode: Option<Mode>,
|
pub mode: Option<Mode>,
|
||||||
|
|
||||||
/// The shared password to encrypt all traffic
|
/// The shared password to encrypt all traffic
|
||||||
#[structopt(short, long, required_unless_one = &["private-key", "config", "genkey", "version"], env)]
|
#[structopt(short, long, required_unless_one = &["private-key", "config", "genkey", "version", "completion"], env)]
|
||||||
pub password: Option<String>,
|
pub password: Option<String>,
|
||||||
|
|
||||||
/// The private key to use
|
/// The private key to use
|
||||||
|
@ -458,7 +459,11 @@ pub struct Args {
|
||||||
|
|
||||||
/// Migrate an old config file
|
/// Migrate an old config file
|
||||||
#[structopt(long, alias = "migrate", requires = "config")]
|
#[structopt(long, alias = "migrate", requires = "config")]
|
||||||
pub migrate_config: bool
|
pub migrate_config: bool,
|
||||||
|
|
||||||
|
/// Generate shell completions
|
||||||
|
#[structopt(long)]
|
||||||
|
pub completion: Option<Shell>
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug, PartialEq, Default)]
|
#[derive(Serialize, Deserialize, Debug, PartialEq, Default)]
|
||||||
|
|
|
@ -234,6 +234,10 @@ fn main() {
|
||||||
);
|
);
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if let Some(shell) = args.completion {
|
||||||
|
Args::clap().gen_completions_to(env!("CARGO_PKG_NAME"), shell, &mut io::stdout());
|
||||||
|
return
|
||||||
|
}
|
||||||
let logger = try_fail!(DualLogger::new(args.log_file.as_ref()), "Failed to open logfile: {}");
|
let logger = try_fail!(DualLogger::new(args.log_file.as_ref()), "Failed to open logfile: {}");
|
||||||
log::set_boxed_logger(Box::new(logger)).unwrap();
|
log::set_boxed_logger(Box::new(logger)).unwrap();
|
||||||
assert!(!args.verbose || !args.quiet);
|
assert!(!args.verbose || !args.quiet);
|
||||||
|
|
Loading…
Reference in New Issue