From 61196df6267fb8bdf5847d952f3bf63a89c138e2 Mon Sep 17 00:00:00 2001 From: Lynnesbian Date: Wed, 15 Mar 2023 06:23:59 +1000 Subject: [PATCH] update clap to 4.1 --- CHANGELOG.md | 3 ++- Cargo.toml | 4 ++-- src/parameters.rs | 35 +++++++++++++++++------------------ 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ec79d8f..4a0268c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## Unreleased ### Changed -- The Minimum Supported Rust Version (MSRV) is now **1.57.0**. +- The Minimum Supported Rust Version (MSRV) is now **1.64.0**. +- Update [`clap`] to v4.0 ## v0.6.0 - 2022-09-04 ### Changed diff --git a/Cargo.toml b/Cargo.toml index 6fc2946..aaba28f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,7 +5,7 @@ version = "0.6.0" authors = ["Lynnesbian "] edition = "2021" license = "GPL-3.0-or-later" -rust-version = "1.57.0" # os_str_bytes requires >=1.57.0, numerous other deps require 2021 edition support +rust-version = "1.64.0" # clap 4.1 requires >=1.64.0 repository = "https://gitlab.com/Lynnesbian/fif" readme = "README.md" keywords = ["mime", "mimetype", "utilities", "tools"] @@ -49,7 +49,7 @@ xdg-mime = "0.3.3" infer = { version = "0.13.0", optional = true } [dependencies.clap] -version = "3.2" +version = "~4.1" default-features = false features = ["wrap_help", "color", "derive", "std", "unicode"] diff --git a/src/parameters.rs b/src/parameters.rs index 931fa5a..1534ed3 100644 --- a/src/parameters.rs +++ b/src/parameters.rs @@ -7,7 +7,7 @@ use std::collections::BTreeSet; use std::path::PathBuf; use cfg_if::cfg_if; -use clap::{ArgEnum, Parser}; +use clap::{ValueEnum, Parser, ArgAction}; use crate::utils::{CLAP_LONG_VERSION, CLAP_VERSION}; use crate::String as StringType; @@ -22,7 +22,7 @@ cfg_if! { } } -#[derive(ArgEnum, Eq, PartialEq, Debug, Copy, Clone)] +#[derive(ValueEnum, Eq, PartialEq, Debug, Copy, Clone)] /// The format to use when running fif without the `--fix` flag. Specified at runtime with the `-o`/`--output-format` /// flag. pub enum OutputFormat { @@ -39,7 +39,7 @@ pub enum OutputFormat { Json, } -#[derive(ArgEnum, Eq, PartialEq, Debug, Copy, Clone)] +#[derive(ValueEnum, Eq, PartialEq, Debug, Copy, Clone)] /// Specifies under what conditions the user should be prompted when running fif in `--fix` mode. Defaults to `Error`. /// Specified at runtime with the `-p`/`--prompt` flag. pub enum Prompt { @@ -63,8 +63,7 @@ pub enum Prompt { This program is free software: you can redistribute it and/or modify \ it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 \ of the License, or (at your option) any later version.", - max_term_width = 120, - setting(clap::AppSettings::DeriveDisplayOrder) + max_term_width = 120 )] /// [`Clap`]-derived struct used to parse command line arguments. pub struct Parameters { @@ -73,7 +72,7 @@ pub struct Parameters { pub fix: bool, /// Requires --fix. Should fif prompt you `Never`, only on `Error`s and overwrites, or `Always`? - #[clap(short = 'p', long, arg_enum, requires = "fix", help_heading = "RENAMING")] + #[clap(short = 'p', long, value_enum, requires = "fix", help_heading = "RENAMING")] pub prompt: Option, /// Requires --fix. Allow overwriting files. Warning: When used in combination with `--prompt never`, fif will @@ -86,8 +85,8 @@ pub struct Parameters { /// Only examine files with these extensions. /// Multiple extensions can be specified by either using the flag multiple times (`-e jpg -e png -e gif`), or by /// separating them with commas (`-e jpg,png,gif`). - #[clap(short, long, use_value_delimiter = true, require_value_delimiter = true, value_name = "ext", takes_value = true, - validator = validate_exts, help_heading = "FILTERING")] + #[clap(short, long, use_value_delimiter = true, value_delimiter = ',', value_name = "ext", num_args(1), + value_parser = validate_exts, help_heading = "FILTERING")] pub exts: Option>, /// Use these preset lists of extensions as the search filter (comma-separated list). @@ -96,9 +95,9 @@ pub struct Parameters { #[clap( short = 'E', long, - arg_enum, + value_enum, use_value_delimiter = true, - require_value_delimiter = true, + value_delimiter = ',', value_name = "set", help_heading = "FILTERING" )] @@ -106,7 +105,7 @@ pub struct Parameters { /// Don't scan files with these extensions. /// This option takes precedence over extensions specified with `-e` or `-E`. - #[clap(short = 'x', long, use_value_delimiter = true, require_value_delimiter = true, value_name = "ext", validator = + #[clap(short = 'x', long, use_value_delimiter = true, value_delimiter = ',', value_name = "ext", value_parser = validate_exts, help_heading = "FILTERING")] pub exclude: Option>, @@ -115,9 +114,9 @@ pub struct Parameters { #[clap( short = 'X', long, - arg_enum, + value_enum, use_value_delimiter = true, - require_value_delimiter = true, + value_delimiter = ',', value_name = "set", help_heading = "FILTERING" )] @@ -146,17 +145,17 @@ pub struct Parameters { /// Output format to use. /// By default, fif will output a PowerShell script on Windows, and a Bourne Shell script on other platforms. - #[clap(short, long, default_value = DEFAULT_FORMAT, arg_enum, value_name = "format", help_heading = "OUTPUT")] + #[clap(short, long, default_value = DEFAULT_FORMAT, value_enum, value_name = "format", help_heading = "OUTPUT")] pub output_format: OutputFormat, /// Output verbosity. Each additional `-v` increases verbosity. /// Can be overridden by FIF_LOG or RUST_LOG. - #[clap(short, long, parse(from_occurrences), group = "verbosity", help_heading = "OUTPUT")] + #[clap(short, long, action = ArgAction::Count, group = "verbosity", help_heading = "OUTPUT")] pub verbose: u8, /// Output quietness. Each additional `-q` decreases verbosity. /// Can be overridden by FIF_LOG or RUST_LOG. - #[clap(short, long, parse(from_occurrences), group = "verbosity", help_heading = "OUTPUT")] + #[clap(short, long, action = ArgAction::Count, group = "verbosity", help_heading = "OUTPUT")] pub quiet: u8, /// Use canonical (absolute) paths in output. @@ -167,7 +166,7 @@ pub struct Parameters { pub canonical_paths: bool, /// The directory to process. - #[clap(name = "DIR", default_value = ".", parse(from_os_str))] + #[clap(name = "DIR", default_value = ".", value_parser)] pub dir: PathBuf, #[cfg(feature = "multi-threaded")] @@ -298,7 +297,7 @@ impl Parameters { } /// Sets of extensions for use with [Parameter](crate::parameters::Parameters)'s `-E` flag. -#[derive(ArgEnum, Eq, PartialEq, Debug, Copy, Clone)] +#[derive(ValueEnum, Eq, PartialEq, Debug, Copy, Clone)] pub enum ExtensionSet { /// Extensions used for image file formats, such as `png`, `jpeg`, `webp`, etc. Images,