summaryrefslogtreecommitdiffstats
path: root/src/config.rs
diff options
context:
space:
mode:
authorFahmi Akbar Wildana <f.a.wildana@gmail.com>2019-10-06 08:44:14 +0700
committerDavid Peter <sharkdp@users.noreply.github.com>2019-10-20 21:43:51 +0200
commita2ee753b2502ac8d8e8a4ddaf38f96f2b2673c36 (patch)
tree688175897a5a7932a68e2311e4db73aafe53cd4f /src/config.rs
parentd3243903c0c3eb16a2c56f4646069c5ece2f2487 (diff)
Move config.rs into src/bin/bat/
Diffstat (limited to 'src/config.rs')
-rw-r--r--src/config.rs105
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()
- );
-}