Merge pull request #261 from ouch-org/refac/optimize-current-dir-call
[ouch.git] / src / main.rs
blobcdc2a81ab604ef2040698bc177ecff6d75f94581
1 // Macros should be declared first
2 pub mod macros;
4 pub mod accessible;
5 pub mod archive;
6 pub mod cli;
7 pub mod commands;
8 pub mod error;
9 pub mod extension;
10 pub mod list;
11 pub mod progress;
12 pub mod utils;
14 /// CLI argparsing definitions, using `clap`.
15 pub mod opts;
17 use std::{env, path::PathBuf};
19 use error::{Error, Result};
20 use once_cell::sync::Lazy;
21 use opts::{Opts, Subcommand};
22 use utils::{QuestionAction, QuestionPolicy};
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     if let Err(err) = run() {
35         eprintln!("{}", err);
36         std::process::exit(EXIT_FAILURE);
37     }
40 fn run() -> Result<()> {
41     let (args, skip_questions_positively, file_visibility_policy) = Opts::parse_args()?;
42     commands::run(args, skip_questions_positively, file_visibility_policy)