"verbose" CLI param

This commit is contained in:
Jörn-Michael Miehe 2025-06-18 18:58:49 +00:00
parent 4eb0627a5f
commit 79bc8e67a7
3 changed files with 22 additions and 3 deletions

View file

@ -48,7 +48,6 @@
- cli functions
- "continue" and "new" flags to avoid user interaction
- "quiet" flag to disable output entirely
- "verbose" flag to adjust RUST_LOG for `shrupl` crate
- some switch to change log to "pretty-print"
- client error rework

View file

@ -11,6 +11,7 @@ use clap::{
builder::{PossibleValuesParser, TypedValueParser},
value_parser,
};
use log::LevelFilter;
use crate::{
file::Checked,
@ -60,6 +61,10 @@ pub struct Cli {
)]
pub chunk_size: usize,
/// Increase output verbosity
#[arg(short, long, action = clap::ArgAction::Count)]
verbose: u8,
/// Base URL for Sharry Instance
url: String,
@ -81,6 +86,7 @@ impl fmt::Debug for Cli {
.field("chunk_size", &self.chunk_size)
.field("share_request", &self.get_share_request())
.field("files", &self.files)
.field("level_filter", &self.get_level_filter())
.field("hash", &self.get_hash())
.finish_non_exhaustive()
}
@ -114,6 +120,16 @@ impl Cli {
NewShareRequest::new(&self.name, self.description.as_ref(), self.max_views)
}
pub fn get_level_filter(&self) -> LevelFilter {
match self.verbose {
0 => LevelFilter::Error,
1 => LevelFilter::Warn,
2 => LevelFilter::Info,
3 => LevelFilter::Debug,
_ => LevelFilter::Trace,
}
}
pub fn get_hash(&self) -> String {
let file_refs = {
let mut refs: Vec<_> = self.files.iter().collect();

View file

@ -23,8 +23,6 @@ use cli::Cli;
use output::{Log, SHRUPL, prompt_continue};
fn main() {
env_logger::init();
let check_ctrlc = {
let stop = Arc::new(AtomicBool::new(false));
let stop_ctrlc = stop.clone();
@ -43,6 +41,12 @@ fn main() {
};
let args = Cli::parse();
env_logger::Builder::new()
.filter_module("shrupl", args.get_level_filter())
.parse_default_env()
.init();
info!("args: {args:#?}");
println!("{} to {}!", style("Welcome").magenta().bold(), *SHRUPL);