Add man page support using --print-manpage (fixes #730)

This commit is contained in:
Sven-Hendrik Haase 2022-02-21 00:50:39 +01:00
parent efe198bf6f
commit bf7280554a
No known key found for this signature in database
GPG Key ID: 39E4B877E62EB915
4 changed files with 37 additions and 8 deletions

33
Cargo.lock generated
View File

@ -337,9 +337,9 @@ dependencies = [
[[package]]
name = "anyhow"
version = "1.0.53"
version = "1.0.54"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94a45b455c14666b85fc40a019e8ab9eb75e3a124e05494f5397122bc9eb06e0"
checksum = "7a99269dff3bc004caa411f38845c20303f1e393ca2bd6581576fa3a7f59577d"
[[package]]
name = "askama_escape"
@ -618,6 +618,16 @@ dependencies = [
"syn",
]
[[package]]
name = "clap_mangen"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0649fb4156bbd7306896025005596033879a2051f9a3aa7416ab915df1f8fdac"
dependencies = [
"clap 3.1.0",
"roff",
]
[[package]]
name = "codemap"
version = "0.1.3"
@ -1270,9 +1280,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
version = "0.2.118"
version = "0.2.119"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06e509672465a0504304aa87f9f176f2b2b716ed8fb105ebe5c02dc6dce96a94"
checksum = "1bf2e165bb3457c8e098ea76f3e3bc9db55f87aa90d52d0e6be741470916aaa4"
[[package]]
name = "libflate"
@ -1429,6 +1439,7 @@ dependencies = [
"chrono-humanize",
"clap 3.1.0",
"clap_complete",
"clap_mangen",
"futures",
"get_if_addrs",
"grass",
@ -2076,6 +2087,12 @@ version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422"
[[package]]
name = "roff"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b833d8d034ea094b1ea68aa6d5c740e0d04bad9d16568d08ba6f76823a114316"
[[package]]
name = "rstest"
version = "0.12.0"
@ -2100,9 +2117,9 @@ dependencies = [
[[package]]
name = "rustls"
version = "0.20.3"
version = "0.20.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b323592e3164322f5b193dc4302e4e36cd8d37158a712d664efae1a5c2791700"
checksum = "4fbfeb8d0ddb84706bc597a5574ab8912817c52a397f819e5b614e2265206921"
dependencies = [
"log",
"ring",
@ -2586,9 +2603,9 @@ checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6"
[[package]]
name = "tracing"
version = "0.1.30"
version = "0.1.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2d8d93354fe2a8e50d5953f5ae2e47a3fc2ef03292e7ea46e3cc38f549525fb9"
checksum = "f6c650a8ef0cd2dd93736f033d21cbd1224c5a967aa0c258d00fcf7dafef9b9f"
dependencies = [
"cfg-if",
"pin-project-lite",

View File

@ -31,6 +31,7 @@ nanoid = "0.4"
alphanumeric-sort = "1"
clap = { version = "3.0.7", features = ["derive", "cargo", "wrap_help"] }
clap_complete = "3.0.3"
clap_mangen = "0.1"
chrono = "0.4"
chrono-humanize = "0.2"
serde = { version = "1", features = ["derive"] }

View File

@ -156,6 +156,10 @@ pub struct CliArgs {
#[clap(long = "print-completions", value_name = "shell", arg_enum)]
pub print_completions: Option<Shell>,
/// Generate man page
#[clap(long = "print-manpage")]
pub print_manpage: bool,
/// TLS certificate to use
#[cfg(feature = "tls")]
#[clap(long = "tls-cert", requires = "tls-key", value_hint = ValueHint::FilePath)]

View File

@ -40,6 +40,13 @@ fn main() -> Result<()> {
return Ok(());
}
if args.print_manpage {
let clap_app = args::CliArgs::command();
let man = clap_mangen::Man::new(clap_app);
man.render(&mut io::stdout())?;
return Ok(());
}
let miniserve_config = MiniserveConfig::try_from_args(args)?;
run(miniserve_config).map_err(|e| {