diff options
author | Andy Freeland <andy@andyfreeland.net> | 2021-03-26 04:06:08 +0000 |
---|---|---|
committer | Andy Freeland <andy@andyfreeland.net> | 2021-03-28 17:29:14 +0000 |
commit | a389db173b8b6f38c8330ddecf00023c72c8ee86 (patch) | |
tree | 7203940e7885d97197bbc7f09dbe83a1994a5e8b /src/main.rs | |
parent | Merge pull request #475 from svenstaro/dependabot/cargo/serde-1.0.125 (diff) | |
download | miniserve-a389db173b8b6f38c8330ddecf00023c72c8ee86.tar.gz miniserve-a389db173b8b6f38c8330ddecf00023c72c8ee86.zip |
Generate completions with `miniserve --print-completions <shell>`
This patch adds a `--print-completions` option to generate shell
completion files at runtime. This ensures the completions are always up
to date.
Fixes #377.
Diffstat (limited to '')
-rw-r--r-- | src/main.rs | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs index 17ab204..747a705 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,6 +11,7 @@ use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use std::thread; use std::time::Duration; use structopt::clap::crate_version; +use structopt::StructOpt; use yansi::{Color, Paint}; mod archive; @@ -101,20 +102,27 @@ pub struct MiniserveConfig { } fn main() { - match run() { + let args = args::CliArgs::from_args(); + + if let Some(shell) = args.print_completions { + args::CliArgs::clap().gen_completions_to("miniserve", shell, &mut std::io::stdout()); + return; + } + + let miniserve_config = args::parse_args(args); + + match run(miniserve_config) { Ok(()) => (), Err(e) => errors::log_error_chain(e.to_string()), } } #[actix_web::main(miniserve)] -async fn run() -> Result<(), ContextualError> { +async fn run(miniserve_config: MiniserveConfig) -> Result<(), ContextualError> { if cfg!(windows) && !Paint::enable_windows_ascii() { Paint::disable(); } - let miniserve_config = args::parse_args(); - let log_level = if miniserve_config.verbose { simplelog::LevelFilter::Info } else { |