diff options
Diffstat (limited to 'hooked/src/main.rs')
-rw-r--r-- | hooked/src/main.rs | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/hooked/src/main.rs b/hooked/src/main.rs index d412469..a3d8199 100644 --- a/hooked/src/main.rs +++ b/hooked/src/main.rs @@ -1,6 +1,7 @@ #[cfg(windows)] use anyhow::bail; use anyhow::Result; +use log::*; use shared::find_root; #[cfg(not(windows))] use std::os::unix::fs::{ @@ -10,6 +11,7 @@ use std::os::unix::fs::{ #[cfg(windows)] use std::os::windows::fs::symlink_file; use std::{ + env, fs, io::Write, }; @@ -43,10 +45,14 @@ enum Args { #[paw::main] fn main(args: Args) { + env::var("RUST_LOG").map(drop).unwrap_or_else(|_| { + env::set_var("RUST_LOG", "info"); + }); + pretty_env_logger::init(); if let Err(e) = match args { Args::Init => init(), } { - eprintln!("{}", e); + error!("{}", e); std::process::exit(1); } } @@ -57,29 +63,47 @@ fn init() -> Result<()> { let root = find_root()?; let git_hooks = &root.join(".git").join("hooks"); + debug!("git_hooks base path: {}", git_hooks.display()); let root = root.join(".dev-suite").join("hooked"); + debug!("root base path: {}", root.display()); fs::create_dir_all(&root)?; for hook in &HOOKS { let path = &root.join(hook); + debug!("dev-suite hook path: {}", path.display()); let git_hook = &git_hooks.join(hook); + debug!("git_hook path: {}", git_hook.display()); if !path.exists() { + debug!("Creating dev-suite hook."); let mut file = fs::File::create(&path)?; + trace!("File created."); let mut perms = file.metadata()?.permissions(); + debug!("Setting dev-suite hook to be executable."); perms.set_mode(0o755); file.set_permissions(perms)?; + trace!("Permissions were set."); file.write_all(b"#! /bin/bash")?; + debug!("Writing data to file."); + debug!("Created git hook {}.", hook); + } else { + debug!("git hook {} already exists. Skipping creation.", hook); } let path = path.canonicalize()?; if !git_hook.exists() { + debug!("Symlinking git hook {}.", hook); #[cfg(not(windows))] symlink(&path, &git_hook)?; #[cfg(windows)] symlink_file(&path, &git_hook)?; + trace!("Symlinked git hook {} to .dev-suite/hooked/{}.", hook, hook); } } + info!( + "Created and symlinked tickets to .git/hooks from {}.", + root.display() + ); Ok(()) } |