implement manpage generation

This commit is contained in:
Penelope Gwen 2026-01-24 14:50:08 -08:00
parent 9a74ac157f
commit d56d8d134e
4 changed files with 41 additions and 10 deletions

22
Cargo.lock generated
View file

@ -348,6 +348,16 @@ version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675"
[[package]]
name = "clap_mangen"
version = "0.2.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "439ea63a92086df93893164221ad4f24142086d535b3a0957b9b9bea2dc86301"
dependencies = [
"clap",
"roff",
]
[[package]]
name = "color_quant"
version = "1.1.0"
@ -685,9 +695,9 @@ checksum = "7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d"
[[package]]
name = "flate2"
version = "1.1.2"
version = "1.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d"
checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369"
dependencies = [
"crc32fast",
"miniz_oxide",
@ -1658,6 +1668,12 @@ version = "0.8.52"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce"
[[package]]
name = "roff"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "88f8660c1ff60292143c98d08fc6e2f654d722db50410e3f3797d40baaf9d8f3"
[[package]]
name = "rpassword"
version = "2.1.0"
@ -1840,9 +1856,11 @@ version = "0.1.7"
dependencies = [
"clap",
"clap_complete",
"clap_mangen",
"confy",
"dialog",
"env_logger",
"flate2",
"freedesktop-icons",
"hex",
"image",

View file

@ -36,12 +36,15 @@ xdg = "3.0.0"
[build-dependencies]
clap = { version = "4.5.45", features = ["derive", "cargo"] }
clap_complete = "4.5.65"
clap_mangen = "0.2.31"
flate2 = "1.1.8"
[package.metadata.deb]
#conflicts = ["sway-profiles"]
changelog = "debian/changelog"
assets = [
"$auto",
["target/release/build/sway-de-utils-*/out/sdu.1.gz", "/usr/share/man/", "644"],
["target/release/build/sway-de-utils-*/out/sdu.bash", "/usr/share/bash-completion/completions/", "644"],
["target/release/build/sway-de-utils-*/out/_sdu", "/usr/share/zsh/vendor_completions/", "644"],
["target/release/build/sway-de-utils-*/out/sdu.fish", "/usr/share/fish/vendor_completions.d/", "644"],

View file

@ -3,27 +3,36 @@ use clap_complete::{
generate_to,
shells::{Bash, Elvish, Fish, Zsh},
};
use std::env;
use std::io::Error;
use std::{env, path::PathBuf};
use std::io::{Error,prelude::Write};
use flate2::{Compression,write::{GzEncoder}};
include!("src/lib/cli.rs");
fn main() -> Result<(), Error> {
let outdir = match env::var_os("OUT_DIR") {
let out_dir = match env::var_os("OUT_DIR") {
None => return Ok(()),
Some(outdir) => outdir,
Some(o) => o,
};
let mut cmd = Cli::command();
let bin_name = "sdu";
let bash_path = generate_to(Bash, &mut cmd, bin_name, &outdir)?;
let zsh_path = generate_to(Zsh, &mut cmd, bin_name, &outdir)?;
let fish_path = generate_to(Fish, &mut cmd, bin_name, &outdir)?;
let elvish_path = generate_to(Elvish, &mut cmd, bin_name, outdir)?;
let bash_path = generate_to(Bash, &mut cmd, bin_name, &out_dir)?;
let zsh_path = generate_to(Zsh, &mut cmd, bin_name, &out_dir)?;
let fish_path = generate_to(Fish, &mut cmd, bin_name, &out_dir)?;
let elvish_path = generate_to(Elvish, &mut cmd, bin_name, &out_dir)?;
println!(
"cargo:warning=completion files were generated: [ {bash_path:?}, {zsh_path:?}, {fish_path:?}, {elvish_path:?} ]"
);
let out_dir_buf: PathBuf = out_dir.into();
let woman = clap_mangen::Man::new(cmd);
let mut buffer: Vec<u8> = Default::default();
woman.render(&mut buffer)?;
let mut e = GzEncoder::new(Vec::new(), Compression::default());
e.write_all(&buffer)?;
std::fs::write(out_dir_buf.join("sdu.1.gz"), e.finish()?)?;
Ok(())
}

1
debian/changelog vendored
View file

@ -1,6 +1,7 @@
sway-de-utils (0.1.7-1) unstable; urgency=medium
* implement shell completions for bash, fish, zsh
* implement manpage generation
* minor fix to dmenu display for shortcuts
-- Penelope Gwen <support@pogmom.me> Sat, 24 Jan 2026 12:48:02 -0800