Commit Diff


commit - ae9c90bc1fb16ce50f4f6f5f72f34a790a900269
commit + 45e7a4100091a435f585a24eed4ea099f795b6f6
blob - 89fa24d0731715eea869e261d34fa250f518c936
blob + 8474782b417c841bda748cfdb5f339c0fdadd129
--- src/main.rs
+++ src/main.rs
@@ -26,11 +26,9 @@ use std::{
 use anyhow::{Context, anyhow, bail};
 use clap::{ArgAction, Parser};
 use ignore::{WalkBuilder, WalkState};
-use log::{error, info, warn};
+use log::{LevelFilter, debug, error, info, warn};
 
-const LONG_VERSION: &str = concat!(
-    env!("CARGO_PKG_NAME"),
-    " ",
+const VERSION: &str = concat!(
     env!("CARGO_PKG_VERSION"),
     " (",
     env!("GIT_HASH", "unknown"),
@@ -47,9 +45,8 @@ const LONG_VERSION: &str = concat!(
 #[derive(Debug, Parser)]
 #[command(
     name = "imgst",
-    about = "Image sanitization",
-    version = env!("CARGO_PKG_VERSION"),
-    long_version = LONG_VERSION,
+    about = "Simple Image metadata cleaner",
+    version = VERSION,
     author,
     propagate_version = true
 )]
@@ -78,10 +75,10 @@ struct Args {
 }
 
 fn main() -> anyhow::Result<()> {
-    env_logger::init();
-
     let args = Args::parse();
 
+    init_logger(args.verbose);
+
     if !args.input.is_dir() {
         bail!("input path '{}' is not directory", args.input.display());
     }
@@ -208,8 +205,35 @@ fn process_img(
     let dst = output_root.join(rel_path);
 
     if dry_run {
-        info!("dry-run: would clean '{}' -> '{}'", src.display(), dst.display());
+        debug!(
+            "dry-run: would clean '{}' -> '{}'",
+            src.display(),
+            dst.display()
+        );
     }
 
     Ok(())
 }
+
+fn init_logger(verbose: u8) {
+    use std::io::Write;
+
+    if std::env::var_os("RUST_LOG").is_some() {
+        env_logger::builder()
+            .format(|buf, record| {
+                writeln!(buf, "[{}]: {}", record.level(), record.args())
+            })
+            .init();
+        return;
+    }
+
+    let level =
+        if verbose > 0 { LevelFilter::Debug } else { LevelFilter::Info };
+
+    env_logger::builder()
+        .filter(None, level)
+        .format(|buf, record| {
+            writeln!(buf, "[{}]: {}", record.level(), record.args())
+        })
+        .init();
+}