From 57b872c7dc4d7681d6797ededc3c6e4eb1bc82bb Mon Sep 17 00:00:00 2001 From: Pavel Ivanov Date: Thu, 16 May 2024 21:22:40 +0200 Subject: [PATCH] new: added man page generator --- Cargo.lock | 21 +++++++++++++++++++-- Cargo.toml | 3 ++- Makefile | 15 +++++++++++++-- README.md | 1 + build/ci/coverage.sh | 1 + src/cli.rs | 11 ++++++++++- src/main.rs | 6 ++++++ 7 files changed, 52 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c97b8b24..e55d306d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -351,6 +351,16 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" +[[package]] +name = "clap_mangen" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1dd95b5ebb5c1c54581dd6346f3ed6a79a3eef95dd372fc2ac13d535535300e" +dependencies = [ + "clap", + "roff", +] + [[package]] name = "closure" version = "0.3.0" @@ -602,7 +612,7 @@ checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" [[package]] name = "encstr" -version = "0.29.5-alpha.1" +version = "0.29.5-alpha.2" [[package]] name = "enum-map" @@ -759,7 +769,7 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hl" -version = "0.29.5-alpha.1" +version = "0.29.5-alpha.2" dependencies = [ "bincode", "bitmask", @@ -772,6 +782,7 @@ dependencies = [ "chrono-tz", "clap", "clap_complete", + "clap_mangen", "closure", "collection_macros", "config", @@ -1362,6 +1373,12 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +[[package]] +name = "roff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b833d8d034ea094b1ea68aa6d5c740e0d04bad9d16568d08ba6f76823a114316" + [[package]] name = "ron" version = "0.8.1" diff --git a/Cargo.toml b/Cargo.toml index e351f774..0c8e5135 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ members = [".", "crate/encstr"] [workspace.package] repository = "https://github.com/pamburus/hl" authors = ["Pavel Ivanov "] -version = "0.29.5-alpha.1" +version = "0.29.5-alpha.2" edition = "2021" license = "MIT" @@ -41,6 +41,7 @@ chrono = { version = "0.4", default-features = false, features = [ chrono-tz = { version = "0", features = ["serde"] } clap = { version = "4", features = ["wrap_help", "derive", "env", "string"] } clap_complete = "4" +clap_mangen = "0" closure = "0" collection_macros = "0" config = "0" diff --git a/Makefile b/Makefile index 072ae217..ef32f964 100644 --- a/Makefile +++ b/Makefile @@ -22,11 +22,22 @@ build-release: contrib-build @cargo build --release --locked .PHONY: build-release -## Install binary -install: contrib-build +## Install binary and man pages +install: contrib-build install-man-pages @cargo install --path . --locked .PHONY: install +## Install man pages +install-man-pages: ~/share/man/man1/hl.1 + @echo $$(tput setaf 3)NOTE:$$(tput sgr0) ensure $$(tput setaf 2)~/share/man$$(tput sgr0) is added to $$(tput setaf 2)MANPATH$$(tput sgr0) environment variable +.PHONY: install-man-pages + +~/share/man/man1/hl.1: contrib-build | ~/share/man/man1 + @HL_CONFIG= cargo run --release --locked -- --man-page >$@ + +~/share/man/man1: + @mkdir -p $@ + ## Install versioned binary install-versioned: contrib-build @cargo install --path . --locked diff --git a/README.md b/README.md index 83ecd724..db9ca790 100644 --- a/README.md +++ b/README.md @@ -513,6 +513,7 @@ Advanced Options: --max-message-size Maximum message size [env: HL_MAX_MESSAGE_SIZE=] [default: "64 MiB"] -C, --concurrency Number of processing threads [env: HL_CONCURRENCY=] --shell-completions Print shell auto-completion script and exit [possible values: bash, elvish, fish, powershell, zsh] + --man-page Print man page and exit --list-themes Print available themes and exit --dump-index Print debug index metadata (in --sort mode) and exit --debug Print debug error messages that can help with troubleshooting diff --git a/build/ci/coverage.sh b/build/ci/coverage.sh index a8c47442..b58626fa 100755 --- a/build/ci/coverage.sh +++ b/build/ci/coverage.sh @@ -46,6 +46,7 @@ function test() { ${MAIN_EXECUTABLE:?} --config=etc/defaults/config-k8s.yaml > /dev/null ${MAIN_EXECUTABLE:?} --config=etc/defaults/config-ecs.yaml > /dev/null ${MAIN_EXECUTABLE:?} --shell-completions bash > /dev/null + ${MAIN_EXECUTABLE:?} --man-page > /dev/null ${MAIN_EXECUTABLE:?} --list-themes > /dev/null echo "" | ${MAIN_EXECUTABLE:?} --concurrency 4 > /dev/null } diff --git a/src/cli.rs b/src/cli.rs index 81532f68..03452e24 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -385,9 +385,18 @@ pub struct Opt { pub concurrency: Option, /// Print shell auto-completion script and exit. - #[arg(long, value_parser = value_parser!(Shell), value_name = "SHELL", help_heading = heading::ADVANCED)] + #[arg( + long, + value_parser = value_parser!(Shell), + value_name = "SHELL", + help_heading = heading::ADVANCED, + )] pub shell_completions: Option, + /// Print man page and exit. + #[arg(long, help_heading = heading::ADVANCED)] + pub man_page: bool, + /// Print available themes and exit. #[arg(long, help_heading = heading::ADVANCED)] pub list_themes: bool, diff --git a/src/main.rs b/src/main.rs index 301cb05d..e5efef64 100644 --- a/src/main.rs +++ b/src/main.rs @@ -46,6 +46,12 @@ fn run() -> Result<()> { return Ok(()); } + if opt.man_page { + let man = clap_mangen::Man::new(cli::Opt::command()); + man.render(&mut stdout())?; + return Ok(()); + } + let color_supported = if stdout().is_terminal() { if let Err(err) = hl::enable_ansi_support() { eprintln!("failed to enable ansi support: {}", err);