Skip to content

Commit 42b5d4e

Browse files
davidanthofftecosaur
authored andcommitted
Add featuremanifestsupport config option
1 parent 299f178 commit 42b5d4e

File tree

5 files changed

+70
-0
lines changed

5 files changed

+70
-0
lines changed

src/bin/juliaup.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use clap::Parser;
33
use juliaup::cli::{ConfigSubCmd, Juliaup, OverrideSubCmd, SelfSubCmd};
44
use juliaup::command_api::run_command_api;
55
use juliaup::command_completions::run_command_completions;
6+
use juliaup::command_config_featuremanifestsupport::run_command_config_featuremanifestsupport;
67
#[cfg(not(windows))]
78
use juliaup::command_config_symlinks::run_command_config_symlinks;
89
use juliaup::command_config_versionsdbupdate::run_command_config_versionsdbupdate;
@@ -123,6 +124,9 @@ fn main() -> Result<()> {
123124
ConfigSubCmd::VersionsDbUpdateInterval { value } => {
124125
run_command_config_versionsdbupdate(value, false, &paths)
125126
}
127+
ConfigSubCmd::FeatureManifestSupport { value } => {
128+
run_command_config_featuremanifestsupport(value, false, &paths)
129+
}
126130
},
127131
Juliaup::Api { command } => run_command_api(&command, &paths),
128132
Juliaup::InitialSetupFromLauncher {} => run_command_initial_setup_from_launcher(&paths),

src/cli.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,4 +157,10 @@ pub enum ConfigSubCmd {
157157
/// New value
158158
value: Option<i64>,
159159
},
160+
/// Enable Julia version selection from manifests
161+
#[clap(name = "featuremanifestsupport")]
162+
FeatureManifestSupport {
163+
/// New value
164+
value: Option<bool>,
165+
},
160166
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
use crate::config_file::{load_config_db, load_mut_config_db, save_config_db};
2+
use anyhow::{Context, Result};
3+
4+
pub fn run_command_config_featuremanifestsupport(
5+
value: Option<bool>,
6+
quiet: bool,
7+
paths: &crate::global_paths::GlobalPaths,
8+
) -> Result<()> {
9+
match value {
10+
Some(value) => {
11+
let mut config_file = load_mut_config_db(paths)
12+
.with_context(|| "`config` command failed to load configuration data.")?;
13+
14+
let mut value_changed = false;
15+
16+
if value != config_file.data.settings.feature_manifest_support {
17+
config_file.data.settings.feature_manifest_support = value;
18+
19+
value_changed = true;
20+
}
21+
22+
save_config_db(&mut config_file)
23+
.with_context(|| "Failed to save configuration file from `config` command.")?;
24+
25+
if !quiet {
26+
if value_changed {
27+
eprintln!("Property 'featuremanifestsupport' set to '{}'", value);
28+
} else {
29+
eprintln!(
30+
"Property 'featuremanifestsupport' is already set to '{}'",
31+
value
32+
);
33+
}
34+
}
35+
}
36+
None => {
37+
let config_file = load_config_db(paths)
38+
.with_context(|| "`config` command failed to load configuration data.")?;
39+
40+
if !quiet {
41+
eprintln!(
42+
"Property 'featuremanifestsupport' set to '{}'",
43+
config_file.data.settings.feature_manifest_support
44+
);
45+
}
46+
}
47+
};
48+
49+
Ok(())
50+
}

src/config_file.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,20 @@ pub struct JuliaupConfigSettings {
6767
skip_serializing_if = "is_default_versionsdb_update_interval"
6868
)]
6969
pub versionsdb_update_interval: i64,
70+
#[serde(
71+
rename = "FeatureManifestSupport",
72+
default,
73+
skip_serializing_if = "is_default"
74+
)]
75+
pub feature_manifest_support: bool,
7076
}
7177

7278
impl Default for JuliaupConfigSettings {
7379
fn default() -> Self {
7480
JuliaupConfigSettings {
7581
create_channel_symlinks: false,
7682
versionsdb_update_interval: default_versionsdb_update_interval(),
83+
feature_manifest_support: false,
7784
}
7885
}
7986
}
@@ -190,6 +197,7 @@ pub fn load_config_db(paths: &GlobalPaths) -> Result<JuliaupReadonlyConfigFile>
190197
settings: JuliaupConfigSettings {
191198
create_channel_symlinks: false,
192199
versionsdb_update_interval: default_versionsdb_update_interval(),
200+
feature_manifest_support: false,
193201
},
194202
last_version_db_update: None,
195203
},
@@ -286,6 +294,7 @@ pub fn load_mut_config_db(paths: &GlobalPaths) -> Result<JuliaupConfigFile> {
286294
settings: JuliaupConfigSettings {
287295
create_channel_symlinks: false,
288296
versionsdb_update_interval: default_versionsdb_update_interval(),
297+
feature_manifest_support: false,
289298
},
290299
last_version_db_update: None,
291300
};

src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ pub mod command_add;
55
pub mod command_api;
66
pub mod command_completions;
77
pub mod command_config_backgroundselfupdate;
8+
pub mod command_config_featuremanifestsupport;
89
pub mod command_config_modifypath;
910
pub mod command_config_startupselfupdate;
1011
pub mod command_config_symlinks;

0 commit comments

Comments
 (0)