From 1badf419bff94c475b3402c5d598112fa2d685f1 Mon Sep 17 00:00:00 2001 From: diogo464 Date: Wed, 13 Aug 2025 12:06:43 +0100 Subject: cli: added drive-size subcommand --- src/main.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src') diff --git a/src/main.rs b/src/main.rs index 68b82ab..8f7723b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -768,6 +768,7 @@ enum Cmd { Blob(BlobArgs), Log(LogArgs), Stat(StatArgs), + DriveSize(DriveSizeArgs), } #[derive(Debug, Args)] @@ -876,6 +877,12 @@ struct StatArgs { path: DrivePath, } +#[derive(Debug, Args)] +struct DriveSizeArgs { + #[clap(flatten)] + common: CliCommon, +} + fn main() { let cli = Cli::parse(); @@ -888,6 +895,7 @@ fn main() { Cmd::Blob(args) => cmd_blob(args), Cmd::Log(args) => cmd_log(args), Cmd::Stat(args) => cmd_stat(args), + Cmd::DriveSize(args) => cmd_drive_size(args), } } @@ -1153,6 +1161,14 @@ fn cmd_stat(args: StatArgs) { println!("{}", node.blob); } +fn cmd_drive_size(args: DriveSizeArgs) { + let ops = common_read_log_file(&args.common); + let mut fs = Fs::default(); + ops.iter().for_each(|op| apply(&mut fs, op).unwrap()); + compute_directory_sizes(&mut fs); + println!("{}", fs.nodes[fs.root].size); +} + fn collect_all_file_paths(root: &Path) -> Vec { let mut queue = vec![root.to_path_buf()]; let mut files = vec![]; -- cgit