diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f39ec5..17ebd2f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ Dates are given in YYYY-MM-DD format. ## v0.3 -### v0.3.0 (2021-xx-yy) +### v0.3.0 (2021-04-28) #### Features - Added `-x`/`--exclude` flag for excluding file extensions (overrides `-e` or `-E` - `-E images -x jpg` scans all image files, except ".jpg" files) @@ -13,13 +13,18 @@ Dates are given in YYYY-MM-DD format. will scan all images *and* all MP3 files - It is now possible to specify multiple extension sets at once: `-E images,system` will scan all images and archives - fif's output now includes the directory it was run from +- Added `-q`/`--quiet` flag for reducing output verbosity +#### Bugfixes +- Resolved some discrepancies between `application/xml` and `text/xml` #### Other - Published my fork of ['mime_guess'] as ['new_mime_guess'], allowing it to be used properly with [crates.io](https://crates.io) - The `videos` extension set has been renamed to `video`, in line with `audio`. `fif --help` has actually mistakenly referred to the set as `video` since v0.2.12! 0uo - CI has been vastly improved +- Changed default verbosity to `info` +## v0.2 ### v0.2.13 (2021-04-26) #### Features - Added `-v`/`--verbose` flag for setting verbosity without using `RUST_LOG` diff --git a/README.md b/README.md index 385f84d..973a4bb 100644 --- a/README.md +++ b/README.md @@ -100,23 +100,35 @@ fif -O powershell ~/Documents > output.ps1 ``` ### Logging -By default, fif will log any warnings and/or errors encountered during execution. This can be changed with the `-v` +By default, fif will log any info, warnings, and errors encountered during execution. This can be changed with the `-v` flag: ```bash -# also log info +# also log debug info fif -v ~/Downloads -# ...and debug +# ...and trace info fif -vv ~/Downloads -# ...and trace -fif -vvv ~/Downloads ``` -The verbosity of the logging can be -modified by the `RUST_LOG` to one of: `trace`, `debug`, `info`, `warn`, `error`. + +You can also reduce the level of logging with the `-q` flag: +```bash +# don't show info +fif -q ~/Downloads +# ...or warnings +fif -qq ~/Downloads +# ...or even errors! +fif -qqq ~/Downloads +``` + +The verbosity of the logging can also be modified by setting the environment variable `RUST_LOG` to `off`, `trace`, +`debug`, `info`, `warn`, or `error`. Values set by `RUST_LOG` override the `-v` and `-q` flags. For example: ```bash +# show all levels except trace RUST_LOG=debug fif ~/Downloads +# only show errors +RUST_LOG=error fif ~/Downloads ``` The five logging levels are used as follows: diff --git a/src/parameters.rs b/src/parameters.rs index 9f08c02..00d047a 100644 --- a/src/parameters.rs +++ b/src/parameters.rs @@ -48,23 +48,23 @@ 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_delimiter = true, require_delimiter = true)] + #[clap(short, long, use_delimiter = true, require_delimiter = true, value_name = "ext")] pub exts: Option>, /// Use these preset lists of extensions as the search filter (comma-separated list). /// `media` includes all extensions from the `audio`, `video`, and `images` sets, making `-E media` equivalent to /// `-E audio,video,images`. - #[clap(short = 'E', long, arg_enum, use_delimiter = true, require_delimiter = true)] + #[clap(short = 'E', long, arg_enum, use_delimiter = true, require_delimiter = true, value_name = "set")] pub ext_set: Vec, /// Don't scan files with these extensions. /// This option takes precedence over extensions specified with `-e` or `-E`. - #[clap(short = 'x', long, use_delimiter = true, require_delimiter = true)] + #[clap(short = 'x', long, use_delimiter = true, require_delimiter = true, value_name = "ext")] pub exclude: Option>, /// Exclude files using a preset list of extensions. /// This option takes precedence over extensions specified with `-e` or `-E`. - #[clap(short = 'X', long, arg_enum, use_delimiter = true, require_delimiter = true)] + #[clap(short = 'X', long, arg_enum, use_delimiter = true, require_delimiter = true, value_name = "set")] pub exclude_set: Vec, /// Don't skip hidden files and directories. @@ -81,18 +81,22 @@ 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)] + #[clap(short, long, default_value = DEFAULT_FORMAT, arg_enum, value_name = "format")] pub output_format: OutputFormat, /// Follow symlinks. #[clap(short, long)] pub follow_symlinks: bool, - /// Output verbosity. Defaults to only logging warnings and errors. + /// Output verbosity. Each additional `-v` increases verbosity. /// Can be overridden by RUST_LOG. - #[clap(short, long, parse(from_occurrences))] + #[clap(short, long, parse(from_occurrences), group = "verbosity")] pub verbose: u8, + /// Output quietness. Each additional `-q` decreases verbosity. + #[clap(short, long, parse(from_occurrences), group = "verbosity")] + pub quiet: u8, + /// The directory to process. // TODO: right now this can only take a single directory - should this be improved? #[clap(name = "DIR", default_value = ".", parse(from_os_str))] @@ -182,11 +186,17 @@ impl Parameters { #![allow(clippy::missing_const_for_fn)] // match was not permitted inside const functions until 1.46 - match self.verbose { - 0 => "warn", - 1 => "info", - 2 => "debug", - _ => "trace", + match self.quiet { + 0 => { + match self.verbose { + 0 => "info", // no verbosity flags specified + 1 => "debug", // -v + _ => "trace" // -vv... + } + }, + 1 => "warn", // -q + 2 => "error", // -qq + _ => "off" // -qqq... } } }