refac: `check_invalid_compression_with_non_archive_format`
[ouch.git] / src / main.rs
blob46619bf1007a0ac00dda60b5813a41745fe87601
1 // Macros should be declared first
2 pub mod macros;
4 pub mod accessible;
5 pub mod archive;
6 pub mod check;
7 pub mod cli;
8 pub mod commands;
9 pub mod error;
10 pub mod extension;
11 pub mod list;
12 pub mod utils;
14 use std::{env, path::PathBuf};
16 use cli::CliArgs;
17 use error::{Error, Result};
18 use once_cell::sync::Lazy;
19 use utils::{QuestionAction, QuestionPolicy};
21 // Used in BufReader and BufWriter to perform less syscalls
22 const BUFFER_CAPACITY: usize = 1024 * 32;
24 /// Current directory or empty directory
25 static CURRENT_DIRECTORY: Lazy<PathBuf> = Lazy::new(|| env::current_dir().unwrap_or_default());
27 /// The status code returned from `ouch` on error
28 pub const EXIT_FAILURE: i32 = libc::EXIT_FAILURE;
30 fn main() {
31     if let Err(err) = run() {
32         eprintln!("{err}");
33         std::process::exit(EXIT_FAILURE);
34     }
37 fn run() -> Result<()> {
38     let (args, skip_questions_positively, file_visibility_policy) = CliArgs::parse_args()?;
39     commands::run(args, skip_questions_positively, file_visibility_policy)