diff options
author | Fahmi Akbar Wildana <f.a.wildana@gmail.com> | 2019-10-06 08:44:14 +0700 |
---|---|---|
committer | David Peter <sharkdp@users.noreply.github.com> | 2019-10-20 21:43:51 +0200 |
commit | a2ee753b2502ac8d8e8a4ddaf38f96f2b2673c36 (patch) | |
tree | 688175897a5a7932a68e2311e4db73aafe53cd4f /src/config.rs | |
parent | d3243903c0c3eb16a2c56f4646069c5ece2f2487 (diff) |
Move config.rs into src/bin/bat/
Diffstat (limited to 'src/config.rs')
-rw-r--r-- | src/config.rs | 105 |
1 files changed, 0 insertions, 105 deletions
diff --git a/src/config.rs b/src/config.rs deleted file mode 100644 index 0f46bff4..00000000 --- a/src/config.rs +++ /dev/null @@ -1,105 +0,0 @@ -use std::env; -use std::ffi::OsString; -use std::fs; -use std::path::PathBuf; - -use shell_words; - -use crate::dirs::PROJECT_DIRS; -use crate::util::transpose; - -pub fn config_file() -> PathBuf { - env::var("BAT_CONFIG_PATH") - .ok() - .map(PathBuf::from) - .filter(|config_path| config_path.is_file()) - .unwrap_or_else(|| PROJECT_DIRS.config_dir().join("config")) -} - -pub fn get_args_from_config_file() -> Result<Vec<OsString>, shell_words::ParseError> { - Ok(transpose( - fs::read_to_string(config_file()) - .ok() - .map(|content| get_args_from_str(&content)), - )? - .unwrap_or_else(|| vec![])) -} - -pub fn get_args_from_env_var() -> Option<Result<Vec<OsString>, shell_words::ParseError>> { - env::var("BAT_OPTS").ok().map(|s| get_args_from_str(&s)) -} - -fn get_args_from_str(content: &str) -> Result<Vec<OsString>, shell_words::ParseError> { - let args_per_line = content - .split('\n') - .map(|line| line.trim()) - .filter(|line| !line.is_empty()) - .filter(|line| !line.starts_with('#')) - .map(|line| shell_words::split(line)) - .collect::<Result<Vec<_>, _>>()?; - - Ok(args_per_line - .iter() - .flatten() - .map(|line| line.into()) - .collect()) -} - -#[test] -fn empty() { - let args = get_args_from_str("").unwrap(); - assert!(args.is_empty()); -} - -#[test] -fn single() { - assert_eq!(vec!["--plain"], get_args_from_str("--plain").unwrap()); -} - -#[test] -fn multiple() { - assert_eq!( - vec!["--plain", "--language=cpp"], - get_args_from_str("--plain --language=cpp").unwrap() - ); -} - -#[test] -fn quotes() { - assert_eq!( - vec!["--theme", "Sublime Snazzy"], - get_args_from_str("--theme \"Sublime Snazzy\"").unwrap() - ); -} - -#[test] -fn multi_line() { - let config = " - -p - --style numbers,changes - - --color=always - "; - assert_eq!( - vec!["-p", "--style", "numbers,changes", "--color=always"], - get_args_from_str(config).unwrap() - ); -} - -#[test] -fn comments() { - let config = " - # plain style - -p - - # show line numbers and Git modifications - --style numbers,changes - - # Always show ANSI colors - --color=always - "; - assert_eq!( - vec!["-p", "--style", "numbers,changes", "--color=always"], - get_args_from_str(config).unwrap() - ); -} |