mirror of
https://github.com/sharkdp/bat.git
synced 2024-11-28 18:53:34 +01:00
Recognize files in $XDG_CONFIG_HOME/git/
and $HOME/.config/git/
better (#2067)
* git global config - lookup $XDG_CONFIG_HOME faithfully * Use `bool::then` * Cover both `$XDG_CONFIG_HOME` & `$HOME/.config` * Remove unused import * Global git config tests * Added trailing newline * Fix git config test * Wrote to changelog * Revert change of `Result::ok` to `Result::unwrap` * Apply suggestions from code review Co-authored-by: Martin Nordholts <enselic@gmail.com> * Guard against empty `$HOME` Co-authored-by: Martin Nordholts <enselic@gmail.com>
This commit is contained in:
parent
36093dd3bc
commit
14ddda0a8b
@ -18,6 +18,7 @@
|
|||||||
- Associate `poetry.lock` files with the `TOML` syntax. See #2049
|
- Associate `poetry.lock` files with the `TOML` syntax. See #2049
|
||||||
- Associate `.mesh`, `.task`, `.rgen`, `.rint`, `.rahit`, `.rchit`, `.rmiss`, and `.rcall` with the `GLSL` syntax. See #2050
|
- Associate `.mesh`, `.task`, `.rgen`, `.rint`, `.rahit`, `.rchit`, `.rmiss`, and `.rcall` with the `GLSL` syntax. See #2050
|
||||||
- Added support for `JQ` syntax, see #2072
|
- Added support for `JQ` syntax, see #2072
|
||||||
|
- Properly associate global git config files rooted in `$XDG_CONFIG_HOME/git/` or `$HOME/.config/git/`. See #2067 (@cyqsimon)
|
||||||
|
|
||||||
## Themes
|
## Themes
|
||||||
|
|
||||||
|
@ -122,8 +122,22 @@ impl<'a> SyntaxMapping<'a> {
|
|||||||
.insert("*.hook", MappingTarget::MapTo("INI"))
|
.insert("*.hook", MappingTarget::MapTo("INI"))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
if let Some(xdg_config_home) = std::env::var_os("XDG_CONFIG_HOME") {
|
// Global git config files rooted in `$XDG_CONFIG_HOME/git/` or `$HOME/.config/git/`
|
||||||
let git_config_path = Path::new(&xdg_config_home).join("git");
|
// See e.g. https://git-scm.com/docs/git-config#FILES
|
||||||
|
if let Some(xdg_config_home) =
|
||||||
|
std::env::var_os("XDG_CONFIG_HOME").filter(|val| !val.is_empty())
|
||||||
|
{
|
||||||
|
insert_git_config_global(&mut mapping, &xdg_config_home);
|
||||||
|
}
|
||||||
|
if let Some(default_config_home) = std::env::var_os("HOME")
|
||||||
|
.filter(|val| !val.is_empty())
|
||||||
|
.map(|home| Path::new(&home).join(".config"))
|
||||||
|
{
|
||||||
|
insert_git_config_global(&mut mapping, &default_config_home);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn insert_git_config_global(mapping: &mut SyntaxMapping, config_home: impl AsRef<Path>) {
|
||||||
|
let git_config_path = config_home.as_ref().join("git");
|
||||||
|
|
||||||
mapping
|
mapping
|
||||||
.insert(
|
.insert(
|
||||||
|
3
tests/examples/git/.config/git/config
vendored
Normal file
3
tests/examples/git/.config/git/config
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[user]
|
||||||
|
email = foo@bar.net
|
||||||
|
name = foobar
|
3
tests/examples/git/.gitconfig
vendored
Normal file
3
tests/examples/git/.gitconfig
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[user]
|
||||||
|
email = foo@bar.net
|
||||||
|
name = foobar
|
@ -1117,7 +1117,9 @@ Single Line
|
|||||||
────────────────────────────────────────────────────────────────────────────────
|
────────────────────────────────────────────────────────────────────────────────
|
||||||
",
|
",
|
||||||
)
|
)
|
||||||
.stderr("\x1b[33m[bat warning]\x1b[0m: Style 'rule' is a subset of style 'grid', 'rule' will not be visible.\n");
|
.stderr(
|
||||||
|
"\x1b[33m[bat warning]\x1b[0m: Style 'rule' is a subset of style 'grid', 'rule' will not be visible.\n",
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
@ -1359,6 +1361,45 @@ fn ignored_suffix_arg() {
|
|||||||
.stderr("");
|
.stderr("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn all_global_git_config_locations_syntax_mapping_work() {
|
||||||
|
let fake_home = Path::new(EXAMPLES_DIR).join("git").canonicalize().unwrap();
|
||||||
|
let expected = "\u{1b}[38;5;231m[\u{1b}[0m\u{1b}[38;5;149muser\u{1b}[0m\u{1b}[38;5;231m]\u{1b}[0m
|
||||||
|
\u{1b}[38;5;231m \u{1b}[0m\u{1b}[38;5;231memail\u{1b}[0m\u{1b}[38;5;231m \u{1b}[0m\u{1b}[38;5;203m=\u{1b}[0m\u{1b}[38;5;231m \u{1b}[0m\u{1b}[38;5;186mfoo@bar.net\u{1b}[0m
|
||||||
|
\u{1b}[38;5;231m \u{1b}[0m\u{1b}[38;5;231mname\u{1b}[0m\u{1b}[38;5;231m \u{1b}[0m\u{1b}[38;5;203m=\u{1b}[0m\u{1b}[38;5;231m \u{1b}[0m\u{1b}[38;5;186mfoobar\u{1b}[0m
|
||||||
|
";
|
||||||
|
|
||||||
|
bat()
|
||||||
|
.env("XDG_CONFIG_HOME", fake_home.join(".config").as_os_str())
|
||||||
|
.arg("-f")
|
||||||
|
.arg("-p")
|
||||||
|
.arg("git/.config/git/config")
|
||||||
|
.assert()
|
||||||
|
.success()
|
||||||
|
.stdout(expected)
|
||||||
|
.stderr("");
|
||||||
|
|
||||||
|
bat()
|
||||||
|
.env("HOME", fake_home.as_os_str())
|
||||||
|
.arg("-f")
|
||||||
|
.arg("-p")
|
||||||
|
.arg("git/.config/git/config")
|
||||||
|
.assert()
|
||||||
|
.success()
|
||||||
|
.stdout(expected)
|
||||||
|
.stderr("");
|
||||||
|
|
||||||
|
bat()
|
||||||
|
.env("HOME", fake_home.as_os_str())
|
||||||
|
.arg("-f")
|
||||||
|
.arg("-p")
|
||||||
|
.arg("git/.gitconfig")
|
||||||
|
.assert()
|
||||||
|
.success()
|
||||||
|
.stdout(expected)
|
||||||
|
.stderr("");
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn acknowledgements() {
|
fn acknowledgements() {
|
||||||
bat()
|
bat()
|
||||||
|
Loading…
Reference in New Issue
Block a user