diff options
author | Lzzzt <liuzitao0123@gmail.com> | 2025-03-06 05:31:20 +0000 |
---|---|---|
committer | Lzzzt <liuzitao0123@gmail.com> | 2025-03-06 05:31:20 +0000 |
commit | d2e6c0d08ad1219cf2a04ebce512830bc2a26d54 (patch) | |
tree | 2aa07ddcba76d083583c75ff0be86147425630e3 | |
parent | make the option effect raw mode (diff) | |
download | miniserve-d2e6c0d08ad1219cf2a04ebce512830bc2a26d54.tar.gz miniserve-d2e6c0d08ad1219cf2a04ebce512830bc2a26d54.zip |
change cli args
Signed-off-by: Lzzzt <liuzitao0123@gmail.com>
Diffstat (limited to '')
-rw-r--r-- | src/args.rs | 20 | ||||
-rw-r--r-- | src/config.rs | 7 |
2 files changed, 24 insertions, 3 deletions
diff --git a/src/args.rs b/src/args.rs index b54c3cb..ee9cb7e 100644 --- a/src/args.rs +++ b/src/args.rs @@ -1,3 +1,4 @@ +use std::fmt::Display; use std::net::IpAddr; use std::path::PathBuf; @@ -15,6 +16,21 @@ pub enum MediaType { Video, } +#[derive(ValueEnum, Clone)] +pub enum SizeDisplay { + Human, + Exact, +} + +impl Display for SizeDisplay { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + SizeDisplay::Human => write!(f, "human"), + SizeDisplay::Exact => write!(f, "exact"), + } + } +} + #[derive(Parser)] #[command(name = "miniserve", author, about, version)] pub struct CliArgs { @@ -352,8 +368,8 @@ pub struct CliArgs { pub enable_webdav: bool, /// Show served file size in exact bytes. - #[arg(long, default_value = "false", env = "MINISERVE_SHOW_EXACT_BYTES")] - pub show_exact_bytes: bool, + #[arg(long, default_value_t = SizeDisplay::Human, env = "MINISERVE_SIZE_DISPLAY")] + pub size_display: SizeDisplay, } /// Checks whether an interface is valid, i.e. it can be parsed into an IP address diff --git a/src/config.rs b/src/config.rs index 9a470ef..379f7a7 100644 --- a/src/config.rs +++ b/src/config.rs @@ -281,6 +281,11 @@ impl MiniserveConfig { .transpose()? .unwrap_or_default(); + let show_exact_bytes = match args.size_display { + crate::args::SizeDisplay::Human => false, + crate::args::SizeDisplay::Exact => true, + }; + Ok(Self { verbose: args.verbose, path: args.path.unwrap_or_else(|| PathBuf::from(".")), @@ -323,7 +328,7 @@ impl MiniserveConfig { webdav_enabled: args.enable_webdav, tls_rustls_config: tls_rustls_server_config, compress_response: args.compress_response, - show_exact_bytes: args.show_exact_bytes, + show_exact_bytes, }) } } |