aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs23
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(());
}