v0.4.3 : persistance du theme actif choisi
- le REPL 'theme <name>' applique ET sauvegarde le theme (settings.theme dans le fichier de config actif, cree s'il manque) via persist_setting - correction racine : config::merge ignorait settings.theme - la valeur persistee n etait jamais relue au chargement, le theme par defaut etait toujours reapplique apres un redemarrage - 'am --theme <name>' reste un one-shot ; config set settings.theme <nom> fonctionne egalement - aides mises a jour (banniere, help theme) - tests de persistance + relecture au demarrage, man pages regenerees, version 0.4.3
This commit is contained in:
@@ -533,6 +533,9 @@ pub fn merge(base: &mut Config, overlay: Config) {
|
||||
if o.self_update_base_url.is_some() {
|
||||
s.self_update_base_url = o.self_update_base_url;
|
||||
}
|
||||
if o.theme.is_some() {
|
||||
s.theme = o.theme;
|
||||
}
|
||||
for (k, v) in o.hooks {
|
||||
s.hooks.insert(k, v);
|
||||
}
|
||||
@@ -764,6 +767,30 @@ agents:
|
||||
assert!(problems.iter().any(|p| p.contains("'run' is required")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn merge_keeps_the_user_theme_setting() {
|
||||
let mut base: Config = serde_yaml::from_str(DEFAULT_CONFIG).unwrap();
|
||||
let overlay: Config = serde_yaml::from_str(
|
||||
r#"
|
||||
version: "1.0"
|
||||
settings:
|
||||
theme: ocean
|
||||
agents: []
|
||||
"#,
|
||||
)
|
||||
.unwrap();
|
||||
merge(&mut base, overlay);
|
||||
assert_eq!(base.settings.theme.as_deref(), Some("ocean"));
|
||||
// The embedded default catalog defines no theme: an overlay without
|
||||
// one leaves the merged setting untouched.
|
||||
let mut base: Config = serde_yaml::from_str(DEFAULT_CONFIG).unwrap();
|
||||
let overlay: Config = serde_yaml::from_str("version: \"1.0\"
|
||||
agents: []
|
||||
").unwrap();
|
||||
merge(&mut base, overlay);
|
||||
assert_eq!(base.settings.theme, None);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn one_or_many_parses_both() {
|
||||
let a: OneOrMany = serde_yaml::from_str("\"make build\"").unwrap();
|
||||
|
||||
Reference in New Issue
Block a user