chore: simplify code after feature stabilization
[ouch.git] / src / main.rs
blob10ead08cdc104698922137776bf82a1528019b80
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 error::{Error, Result};
15 use once_cell::sync::Lazy;
16 use utils::{QuestionAction, QuestionPolicy};
18 use crate::utils::logger::spawn_logger_thread;
20 // Used in BufReader and BufWriter to perform less syscalls
21 const BUFFER_CAPACITY: usize = 1024 * 32;
23 /// Current directory or empty directory
24 static CURRENT_DIRECTORY: Lazy<PathBuf> = Lazy::new(|| env::current_dir().unwrap_or_default());
26 /// The status code returned from `ouch` on error
27 pub const EXIT_FAILURE: i32 = libc::EXIT_FAILURE;
29 fn main() {
30     let handler = spawn_logger_thread();
31     let result = run();
32     handler.shutdown_and_wait();
34     if let Err(err) = result {
35         eprintln!("{err}");
36         std::process::exit(EXIT_FAILURE);
37     }
40 fn run() -> Result<()> {
41     let (args, skip_questions_positively, file_visibility_policy) = CliArgs::parse_and_validate_args()?;
42     commands::run(args, skip_questions_positively, file_visibility_policy)