From cfe04f849bcaa49ceaff80d0efc315ae3b952a47 Mon Sep 17 00:00:00 2001 From: Sven-Hendrik Haase Date: Mon, 18 Oct 2021 21:43:42 +0200 Subject: Update clap --- Cargo.lock | 25 ++++++++++++++----------- Cargo.toml | 4 ++-- src/args.rs | 18 ++++++------------ src/main.rs | 21 +++++---------------- tests/cli.rs | 4 ++-- 5 files changed, 29 insertions(+), 43 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e98ffd2..b220021 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -565,9 +565,9 @@ dependencies = [ [[package]] name = "clap" -version = "3.0.0-beta.4" +version = "3.0.0-beta.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcd70aa5597dbc42f7217a543f9ef2768b2ef823ba29036072d30e1d88e98406" +checksum = "feff3878564edb93745d58cf63e17b63f24142506e7a20c87a5521ed7bfb1d63" dependencies = [ "atty", "bitflags", @@ -579,14 +579,14 @@ dependencies = [ "termcolor", "terminal_size", "textwrap 0.14.2", - "vec_map", + "unicase", ] [[package]] name = "clap_derive" -version = "3.0.0-beta.4" +version = "3.0.0-beta.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5bb0d655624a0b8770d1c178fb8ffcb1f91cc722cb08f451e3dc72465421ac" +checksum = "8b15c6b4f786ffb6192ffe65a36855bc1fc2444bcd0945ae16748dcd6ed7d0d3" dependencies = [ "heck", "proc-macro-error", @@ -597,11 +597,11 @@ dependencies = [ [[package]] name = "clap_generate" -version = "3.0.0-beta.4" +version = "3.0.0-beta.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d9b1abef93569f290952eff3c4a0a92d6767bb5158db095b4dc9a512b1c3643" +checksum = "097ab5db1c3417442270cd57c8dd39f6c3114d3ce09d595f9efddbb1fcfaa799" dependencies = [ - "clap 3.0.0-beta.4", + "clap 3.0.0-beta.5", ] [[package]] @@ -1407,7 +1407,7 @@ dependencies = [ "bytesize", "chrono", "chrono-humanize", - "clap 3.0.0-beta.4", + "clap 3.0.0-beta.5", "clap_generate", "futures", "get_if_addrs", @@ -1571,9 +1571,12 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "os_str_bytes" -version = "3.1.0" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6acbef58a60fe69ab50510a55bc8cdd4d6cf2283d27ad338f54cb52747a9cf2d" +checksum = "addaa943333a514159c80c97ff4a93306530d965d27e139188283cd13e06a799" +dependencies = [ + "memchr", +] [[package]] name = "output_vt100" diff --git a/Cargo.toml b/Cargo.toml index ba893df..c81fdbe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,8 +30,8 @@ port_check = "0.1" bytesize = "1" nanoid = "0.4" alphanumeric-sort = "1" -clap = { version = "3.0.0-beta.4", features = ["wrap_help"] } -clap_generate = "3.0.0-beta.4" +clap = { version = "3.0.0-beta.5", features = ["wrap_help"] } +clap_generate = "3.0.0-beta.5" chrono = "0.4" chrono-humanize = "0.2" serde = { version = "1", features = ["derive"] } diff --git a/src/args.rs b/src/args.rs index c610bbe..449ea28 100644 --- a/src/args.rs +++ b/src/args.rs @@ -1,4 +1,4 @@ -use clap::{Clap, ValueHint}; +use clap::{Parser, ValueHint}; use clap_generate::Shell; use http::header::{HeaderMap, HeaderName, HeaderValue}; use std::net::IpAddr; @@ -8,14 +8,8 @@ use crate::auth; use crate::errors::ContextualError; use crate::renderer; -#[derive(Clap)] -#[clap( - name = "miniserve", - author, - about, - version, - setting = clap::AppSettings::ColoredHelp, -)] +#[derive(Parser)] +#[clap(name = "miniserve", author, about, version)] pub struct CliArgs { /// Be verbose, includes emitting access logs #[clap(short = 'v', long = "verbose")] @@ -75,7 +69,7 @@ pub struct CliArgs { short = 'c', long = "color-scheme", default_value = "squirrel", - possible_values = &renderer::THEME_SLUGS, + possible_values = &*renderer::THEME_SLUGS, case_insensitive = true, )] pub color_scheme: String, @@ -85,7 +79,7 @@ pub struct CliArgs { short = 'd', long = "color-scheme-dark", default_value = "archlinux", - possible_values = &renderer::THEME_SLUGS, + possible_values = &*renderer::THEME_SLUGS, case_insensitive = true, )] pub color_scheme_dark: String, @@ -147,7 +141,7 @@ pub struct CliArgs { pub show_wget_footer: bool, /// Generate completion file for a shell - #[clap(long = "print-completions", value_name = "shell", possible_values = &Shell::variants())] + #[clap(long = "print-completions", value_name = "shell", arg_enum)] pub print_completions: Option, /// TLS certificate to use diff --git a/src/main.rs b/src/main.rs index cb11145..c43ac95 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,10 +8,9 @@ use actix_web::web; use actix_web::{http::header::ContentType, Responder}; use actix_web::{middleware, App, HttpRequest, HttpResponse}; use actix_web_httpauth::middleware::HttpAuthentication; -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 anyhow::Result; +use clap::{crate_version, IntoApp, Parser}; +use clap_generate::generate; use log::{error, warn}; use qrcodegen::{QrCode, QrCodeEcc}; use yansi::{Color, Paint}; @@ -34,18 +33,8 @@ fn main() -> Result<()> { if let Some(shell) = args.print_completions { let mut clap_app = args::CliArgs::into_app(); - match shell { - Shell::Bash => generate::(&mut clap_app, "miniserve", &mut std::io::stdout()), - Shell::Elvish => { - generate::(&mut clap_app, "miniserve", &mut std::io::stdout()) - } - Shell::Fish => generate::(&mut clap_app, "miniserve", &mut std::io::stdout()), - Shell::PowerShell => { - generate::(&mut clap_app, "miniserve", &mut std::io::stdout()) - } - Shell::Zsh => generate::(&mut clap_app, "miniserve", &mut std::io::stdout()), - _ => bail!("Invalid shell provided!"), - } + let app_name = clap_app.get_name().to_string(); + generate(shell, &mut clap_app, app_name, &mut io::stdout()); return Ok(()); } diff --git a/tests/cli.rs b/tests/cli.rs index 8c88c93..7c3c972 100644 --- a/tests/cli.rs +++ b/tests/cli.rs @@ -32,10 +32,10 @@ fn version_shows() -> Result<(), Error> { #[test] /// Print completions and exit. fn print_completions() -> Result<(), Error> { - for shell in &Shell::variants() { + for shell in Shell::arg_values() { Command::cargo_bin("miniserve")? .arg("--print-completions") - .arg(&shell) + .arg(shell.get_name()) .assert() .success(); } -- cgit v1.2.3