Skip to content

Commit e4c8eb7

Browse files
committed
cli: Use clap-mangen to generate man pages
1 parent bc997d8 commit e4c8eb7

File tree

4 files changed

+41
-49
lines changed

4 files changed

+41
-49
lines changed

Cargo.lock

+17
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cli/Cargo.toml

+2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ rand = "0.8.3"
2929

3030
# CLI specific dependencies
3131
magic-wormhole = { path = "..", version = "0.7", features = ["all"] }
32+
clap_mangen = { version = "0.2", optional = true }
3233
clap = { version = "4", features = ["cargo", "derive", "help"] }
3334
clap_complete = "4"
3435
env_logger = "0.11"
@@ -57,3 +58,4 @@ experimental = ["experimental-transfer-v2"]
5758

5859
default = ["magic-wormhole/default", "magic-wormhole/forwarding"]
5960
all = ["default", "magic-wormhole/native-tls"]
61+
generate-manpage = ["dep:clap_mangen"]

cli/src/main.rs

+22-2
Original file line numberDiff line numberDiff line change
@@ -225,12 +225,19 @@ enum WormholeCommand {
225225
},
226226
#[command(hide = true)]
227227
Help,
228+
/// Generate the manual pages for this project
229+
#[cfg(feature = "generate-manpage")]
230+
#[command(name = "generate-manpage", hide = true)]
231+
GenerateManpage {
232+
/// The path of the manpage
233+
path: PathBuf,
234+
},
228235
}
229236

230237
#[derive(Debug, Parser)]
231238
#[command(
232239
version,
233-
author,
240+
author = "The wormhole-rs developers",
234241
about,
235242
arg_required_else_help = true,
236243
disable_help_subcommand = true,
@@ -249,7 +256,7 @@ struct WormholeCli {
249256
display_order = 100
250257
)]
251258
log: bool,
252-
#[clap(subcommand)]
259+
#[command(subcommand)]
253260
command: WormholeCommand,
254261
}
255262

@@ -546,6 +553,19 @@ async fn main() -> eyre::Result<()> {
546553
println!("Use --help to get help");
547554
std::process::exit(2);
548555
},
556+
#[cfg(feature = "generate-manpage")]
557+
WormholeCommand::GenerateManpage { path } => {
558+
println!("Generating manpage as {}", path.canonicalize()?.display());
559+
560+
let cmd = WormholeCli::command();
561+
let man = clap_mangen::Man::new(cmd)
562+
.section("1")
563+
.date("Jul 2024")
564+
.manual("User Commands");
565+
566+
let mut file = std::fs::File::create(path)?;
567+
man.render(&mut file)?;
568+
},
549569
}
550570

551571
Ok(())

wormhole.1

-47
This file was deleted.

0 commit comments

Comments
 (0)