Merge pull request #314 from ouch-org/bump-version-to-0.4.0
[ouch.git] / src / main.rs
blob7abb4f1a045941a81341ca9bb58ee5c1ff532dc8
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 utils;
13 /// CLI argparsing definitions, using `clap`.
14 pub mod opts;
16 use std::{env, path::PathBuf};
18 use error::{Error, Result};
19 use once_cell::sync::Lazy;
20 use opts::{Opts, Subcommand};
21 use utils::{QuestionAction, QuestionPolicy};
23 // Used in BufReader and BufWriter to perform less syscalls
24 const BUFFER_CAPACITY: usize = 1024 * 32;
26 /// Current directory or empty directory
27 static CURRENT_DIRECTORY: Lazy<PathBuf> = Lazy::new(|| env::current_dir().unwrap_or_default());
29 /// The status code returned from `ouch` on error
30 pub const EXIT_FAILURE: i32 = libc::EXIT_FAILURE;
32 fn main() {
33     if let Err(err) = run() {
34         eprintln!("{}", err);
35         std::process::exit(EXIT_FAILURE);
36     }
39 fn run() -> Result<()> {
40     let (args, skip_questions_positively, file_visibility_policy) = Opts::parse_args()?;
41     commands::run(args, skip_questions_positively, file_visibility_policy)