refactor: improve code formatting in `mod.rs` and `logger.rs`
[ouch.git] / src / main.rs
blob3f1f7dd4261154be0260aa006a3ff0e1dee58b26
1 pub mod accessible;
2 pub mod archive;
3 pub mod check;
4 pub mod cli;
5 pub mod commands;
6 pub mod error;
7 pub mod extension;
8 pub mod list;
9 pub mod utils;
11 use std::{env, path::PathBuf};
13 use cli::CliArgs;
14 use once_cell::sync::Lazy;
16 use self::{
17     error::{Error, Result},
18     utils::{
19         logger::{shutdown_logger_and_wait, spawn_logger_thread},
20         QuestionAction, QuestionPolicy,
21     },
24 // Used in BufReader and BufWriter to perform less syscalls
25 const BUFFER_CAPACITY: usize = 1024 * 32;
27 /// Current directory or empty directory
28 static CURRENT_DIRECTORY: Lazy<PathBuf> = Lazy::new(|| env::current_dir().unwrap_or_default());
30 /// The status code returned from `ouch` on error
31 pub const EXIT_FAILURE: i32 = libc::EXIT_FAILURE;
33 fn main() {
34     spawn_logger_thread();
35     let result = run();
36     shutdown_logger_and_wait();
38     if let Err(err) = result {
39         eprintln!("{err}");
40         std::process::exit(EXIT_FAILURE);
41     }
44 fn run() -> Result<()> {
45     let (args, skip_questions_positively, file_visibility_policy) = CliArgs::parse_and_validate_args()?;
46     commands::run(args, skip_questions_positively, file_visibility_policy)