Allow printing overridden config values via --include-overridden.

This commit is contained in:
Daehyeok Mun 2024-01-15 11:24:27 -08:00 committed by Daehyeok Mun
parent 25f9727e82
commit 4b224c45e0
3 changed files with 48 additions and 3 deletions

View file

@ -22,6 +22,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
* There's now a virtual root operation, similar to the [virtual root
commit](docs/glossary.md#root-commit). It appears at the end of `jj op log`.
* `jj config list` gained a `--include-overridden` option to allow
printing overridden config values.
### Fixed bugs

View file

@ -78,6 +78,9 @@ pub(crate) struct ConfigListArgs {
/// Whether to explicitly include built-in default values in the list.
#[arg(long)]
pub include_defaults: bool,
/// Allow printing overridden values.
#[arg(long)]
pub include_overridden: bool,
// TODO(#1047): Support --show-origin using LayeredConfigs.
// TODO(#1047): Support ConfigArgs (--user or --repo).
}
@ -151,17 +154,18 @@ pub(crate) fn cmd_config_list(
} in &values
{
// Remove overridden values.
// TODO(#1047): Allow printing overridden values via `--include-overridden`.
if *is_overridden {
if *is_overridden && !args.include_overridden {
continue;
}
// Skip built-ins if not included.
if !args.include_defaults && *source == ConfigSource::Default {
continue;
}
writeln!(
ui.stdout(),
"{}={}",
"{}{}={}",
if *is_overridden { "# " } else { "" },
path.join("."),
serialize_config_value(value)
)?;

View file

@ -174,6 +174,24 @@ fn test_config_layer_override_default() {
insta::assert_snapshot!(stdout, @r###"
merge-tools.vimdiff.program="command-arg"
"###);
// Allow printing overridden values
let stdout = test_env.jj_cmd_success(
&repo_path,
&[
"config",
"list",
config_key,
"--include-overridden",
"--config-toml",
&format!("{config_key}={value:?}", value = "command-arg"),
],
);
insta::assert_snapshot!(stdout, @r###"
# merge-tools.vimdiff.program="user"
# merge-tools.vimdiff.program="repo"
merge-tools.vimdiff.program="command-arg"
"###);
}
#[test]
@ -229,6 +247,26 @@ fn test_config_layer_override_env() {
insta::assert_snapshot!(stdout, @r###"
ui.editor="command-arg"
"###);
// Allow printing overridden values
let stdout = test_env.jj_cmd_success(
&repo_path,
&[
"config",
"list",
config_key,
"--include-overridden",
"--config-toml",
&format!("{config_key}={value:?}", value = "command-arg"),
],
);
insta::assert_snapshot!(stdout, @r###"
# ui.editor="env-base"
# ui.editor="user"
# ui.editor="repo"
# ui.editor="env-override"
ui.editor="command-arg"
"###);
}
#[test]