Skip to content

Commit 4d45ca6

Browse files
committed
tar2arx and zip2arx also generate man page.
1 parent c47ab9c commit 4d45ca6

File tree

5 files changed

+44
-7
lines changed

5 files changed

+44
-7
lines changed

Cargo.lock

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

tar2arx/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,6 @@ arx = { path = "../libarx", version = "0.2.0", package="libarx", features=["cmd_
1515
jbk.workspace = true
1616
clap.workspace = true
1717
indicatif.workspace = true
18+
clap_mangen.workspace = true
1819
tar = "0.4.39"
1920
niffler = "2.5.0"

tar2arx/src/main.rs

+18-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use clap::Parser;
1+
use clap::{CommandFactory, Parser};
22

33
use arx::create::Adder;
44
use std::io::Read;
@@ -16,20 +16,29 @@ struct Cli {
1616
#[arg(value_parser)]
1717
tar_file: Option<String>,
1818

19+
#[arg(long, help_heading = "Advanced")]
20+
generate_man_page: bool,
21+
1922
/// Archive name to create
2023
#[arg(
2124
short,
2225
long,
2326
value_parser,
24-
required_unless_present("list_compressions")
27+
required_unless_present_any(["list_compressions", "generate_man_page"])
2528
)]
2629
outfile: Option<PathBuf>,
2730

2831
#[command(flatten)]
2932
concat_mode: Option<arx::cmd_utils::ConcatMode>,
3033

3134
/// Set compression algorithm to use
32-
#[arg(short, long, value_parser=arx::cmd_utils::compression_arg_parser, required=false, default_value = "zstd")]
35+
#[arg(
36+
short,
37+
long,
38+
value_parser=arx::cmd_utils::compression_arg_parser,
39+
required=false,
40+
default_value = "zstd"
41+
)]
3342
compression: jbk::creator::Compression,
3443

3544
/// List available compression algorithms
@@ -257,6 +266,12 @@ fn main() -> jbk::Result<()> {
257266
return Ok(());
258267
}
259268

269+
if args.generate_man_page {
270+
let man = clap_mangen::Man::new(Cli::command());
271+
man.render(&mut std::io::stdout())?;
272+
return Ok(());
273+
}
274+
260275
let mut input_size = None;
261276
let input: Box<dyn Read> = match args.tar_file {
262277
None => Box::new(std::io::stdin()),

zip2arx/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,6 @@ arx = { path = "../libarx", version = "0.2.0", package="libarx", features=["cmd_
1515
jbk.workspace = true
1616
clap.workspace = true
1717
indicatif.workspace = true
18+
clap_mangen.workspace = true
1819
zip = "0.6.6"
1920
flate2 = "1.0.26"

zip2arx/src/main.rs

+22-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use clap::Parser;
1+
use clap::{CommandFactory, Parser};
22

33
use arx::create::Adder;
44
use std::io::{Read, Seek};
@@ -11,23 +11,35 @@ use std::sync::Arc;
1111
#[command(name = "tar2arx", author, version, about, long_about=None)]
1212
struct Cli {
1313
/// Zip file to convert
14-
#[arg(value_parser, required_unless_present("list_compressions"))]
14+
#[arg(
15+
value_parser,
16+
required_unless_present_any(["list_compressions", "generate_man_page"])
17+
)]
1518
zip_file: Option<PathBuf>,
1619

20+
#[arg(long, help_heading = "Advanced")]
21+
generate_man_page: bool,
22+
1723
/// Archive name to create
1824
#[arg(
1925
short,
2026
long,
2127
value_parser,
22-
required_unless_present("list_compressions")
28+
required_unless_present_any(["list_compressions", "generate_man_page"])
2329
)]
2430
outfile: Option<PathBuf>,
2531

2632
#[command(flatten)]
2733
concat_mode: Option<arx::cmd_utils::ConcatMode>,
2834

2935
/// Set compression algorithm to use
30-
#[arg(short, long, value_parser=arx::cmd_utils::compression_arg_parser, required=false, default_value = "zstd")]
36+
#[arg(
37+
short,
38+
long,
39+
value_parser=arx::cmd_utils::compression_arg_parser,
40+
required=false,
41+
default_value = "zstd"
42+
)]
3143
compression: jbk::creator::Compression,
3244

3345
/// List available compression algorithms
@@ -224,6 +236,12 @@ fn main() -> jbk::Result<()> {
224236
return Ok(());
225237
}
226238

239+
if args.generate_man_page {
240+
let man = clap_mangen::Man::new(Cli::command());
241+
man.render(&mut std::io::stdout())?;
242+
return Ok(());
243+
}
244+
227245
let file = std::fs::File::open(args.zip_file.as_ref().unwrap())?;
228246
let archive = zip::ZipArchive::new(file).unwrap();
229247
let converter = Converter::new(

0 commit comments

Comments
 (0)