diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/src/main.rs b/src/main.rs index 398f580..c1d17b4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -10,10 +10,11 @@ use actix_web::{ Responder, }; use actix_web::{middleware, App, HttpRequest, HttpResponse}; -use anyhow::Result; +use anyhow::{bail, Result}; +use clap::{crate_version, Clap, IntoApp}; +use clap_generate::generators::{Bash, Elvish, Fish, PowerShell, Zsh}; +use clap_generate::{generate, Shell}; use log::{error, warn}; -use structopt::clap::crate_version; -use structopt::StructOpt; use yansi::{Color, Paint}; mod archive; @@ -30,10 +31,22 @@ use crate::config::MiniserveConfig; use crate::errors::ContextualError; fn main() -> Result<()> { - let args = args::CliArgs::from_args(); + let args = args::CliArgs::parse(); if let Some(shell) = args.print_completions { - args::CliArgs::clap().gen_completions_to("miniserve", shell, &mut std::io::stdout()); + let mut clap_app = args::CliArgs::into_app(); + match shell { + Shell::Bash => generate::<Bash, _>(&mut clap_app, "miniserve", &mut std::io::stdout()), + Shell::Elvish => { + generate::<Elvish, _>(&mut clap_app, "miniserve", &mut std::io::stdout()) + } + Shell::Fish => generate::<Fish, _>(&mut clap_app, "miniserve", &mut std::io::stdout()), + Shell::PowerShell => { + generate::<PowerShell, _>(&mut clap_app, "miniserve", &mut std::io::stdout()) + } + Shell::Zsh => generate::<Zsh, _>(&mut clap_app, "miniserve", &mut std::io::stdout()), + _ => bail!("Invalid shell provided!"), + } return Ok(()); } |