Bump version to 0.2.0, add --version and --help CLI flags

- Version 0.2.0 with all new features
- Add -v/--version flag to display version
- Add -h/--help flag with keybindings overview
- Show version in title bar and help overlay
This commit is contained in:
kidev 2026-01-30 23:58:38 +01:00
parent 47d1573bba
commit 1fb4dc0092
4 changed files with 56 additions and 3 deletions

View File

@ -1,6 +1,6 @@
[package] [package]
name = "zfsdu" name = "zfsdu"
version = "0.1.0" version = "0.2.0"
edition = "2021" edition = "2021"
description = "ncdu-like disk usage viewer for ZFS with snapshot management" description = "ncdu-like disk usage viewer for ZFS with snapshot management"
authors = ["Florian Schermer"] authors = ["Florian Schermer"]

Binary file not shown.

View File

@ -13,8 +13,30 @@ use crossterm::{
use std::time::Duration; use std::time::Duration;
use ratatui::{backend::CrosstermBackend, Terminal}; use ratatui::{backend::CrosstermBackend, Terminal};
use std::io; use std::io;
use std::env;
const VERSION: &str = env!("CARGO_PKG_VERSION");
fn main() -> Result<()> { fn main() -> Result<()> {
// Handle command line arguments
let args: Vec<String> = env::args().collect();
if args.len() > 1 {
match args[1].as_str() {
"-v" | "--version" => {
println!("zfsdu {}", VERSION);
return Ok(());
}
"-h" | "--help" => {
print_help();
return Ok(());
}
_ => {
eprintln!("Unknown option: {}", args[1]);
eprintln!("Use --help for usage information");
std::process::exit(1);
}
}
}
enable_raw_mode()?; enable_raw_mode()?;
let mut stdout = io::stdout(); let mut stdout = io::stdout();
execute!(stdout, EnterAlternateScreen, EnableMouseCapture)?; execute!(stdout, EnterAlternateScreen, EnableMouseCapture)?;
@ -39,6 +61,35 @@ fn main() -> Result<()> {
Ok(()) Ok(())
} }
fn print_help() {
println!("zfsdu {} - ZFS Disk Usage Viewer", VERSION);
println!();
println!("USAGE:");
println!(" zfsdu [OPTIONS]");
println!();
println!("OPTIONS:");
println!(" -h, --help Print help information");
println!(" -v, --version Print version information");
println!();
println!("KEYBINDINGS:");
println!(" ↑/k, ↓/j Navigate up/down");
println!(" Enter/l Expand/collapse dataset");
println!(" Space Mark/unmark snapshot");
println!(" +/-/* Select/unselect/invert");
println!(" s Toggle sort (Size/Date/Name)");
println!(" / Search");
println!(" f Filter");
println!(" d Delete marked snapshots");
println!(" D Toggle dry-run mode");
println!(" a Toggle auto-refresh");
println!(" r Refresh");
println!(" ? Help");
println!(" q Quit");
println!();
println!("CONFIG:");
println!(" ~/.config/zfsdu/config.toml");
}
fn run_app<B: ratatui::backend::Backend>(terminal: &mut Terminal<B>, app: &mut App) -> Result<()> { fn run_app<B: ratatui::backend::Backend>(terminal: &mut Terminal<B>, app: &mut App) -> Result<()> {
loop { loop {
terminal.draw(|f| ui::draw(f, app))?; terminal.draw(|f| ui::draw(f, app))?;

View File

@ -52,10 +52,12 @@ pub fn draw(f: &mut Frame, app: &mut App) {
} }
} }
const VERSION: &str = env!("CARGO_PKG_VERSION");
fn draw_title(f: &mut Frame, area: Rect, app: &App) { fn draw_title(f: &mut Frame, area: Rect, app: &App) {
let (bg, _fg, header, _, _, _, _, _, _, _) = get_colors(app); let (bg, _fg, header, _, _, _, _, _, _, _) = get_colors(app);
let mut title = " zfsdu ".to_string(); let mut title = format!(" zfsdu v{} ", VERSION);
// Show sort mode // Show sort mode
title.push_str(&format!("[Sort: {}] ", app.sort_mode.label())); title.push_str(&format!("[Sort: {}] ", app.sort_mode.label()));
@ -435,7 +437,7 @@ fn draw_help(f: &mut Frame, app: &App) {
let help = Paragraph::new(help_text.join("\n")) let help = Paragraph::new(help_text.join("\n"))
.block( .block(
Block::default() Block::default()
.title(" Help - zfsdu ") .title(format!(" Help - zfsdu v{} ", VERSION))
.borders(Borders::ALL) .borders(Borders::ALL)
.border_style(Style::default().fg(header)), .border_style(Style::default().fg(header)),
) )