mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-31 04:23:40 +00:00
Bugfix/compat auto config (#812)
* account for no dependent config when auto configuring * fix config path * add check for config file to dependency check command
This commit is contained in:
@@ -46,7 +46,7 @@ pub fn validate_configuration(
|
|||||||
|
|
||||||
pub fn validate_dependency_configuration(
|
pub fn validate_dependency_configuration(
|
||||||
name: &str,
|
name: &str,
|
||||||
config: Config,
|
config: &Option<Config>,
|
||||||
parent_name: &str,
|
parent_name: &str,
|
||||||
parent_config: Config,
|
parent_config: Config,
|
||||||
rules_path: &Path,
|
rules_path: &Path,
|
||||||
@@ -54,7 +54,11 @@ pub fn validate_dependency_configuration(
|
|||||||
let rules: Vec<ConfigRuleEntry> = serde_yaml::from_reader(std::fs::File::open(rules_path)?)?;
|
let rules: Vec<ConfigRuleEntry> = serde_yaml::from_reader(std::fs::File::open(rules_path)?)?;
|
||||||
let mut cfgs = LinearMap::new();
|
let mut cfgs = LinearMap::new();
|
||||||
cfgs.insert(parent_name, Cow::Borrowed(&parent_config));
|
cfgs.insert(parent_name, Cow::Borrowed(&parent_config));
|
||||||
cfgs.insert(name, Cow::Borrowed(&config));
|
if let Some(config) = config {
|
||||||
|
cfgs.insert(name, Cow::Borrowed(&config))
|
||||||
|
} else {
|
||||||
|
cfgs.insert(name, Cow::Owned(serde_json::Map::new()))
|
||||||
|
};
|
||||||
let rule_check = rules
|
let rule_check = rules
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|r| r.check(&parent_config, &cfgs))
|
.map(|r| r.check(&parent_config, &cfgs))
|
||||||
@@ -67,7 +71,7 @@ pub fn validate_dependency_configuration(
|
|||||||
|
|
||||||
pub fn apply_dependency_configuration(
|
pub fn apply_dependency_configuration(
|
||||||
package_id: &str,
|
package_id: &str,
|
||||||
config: Config,
|
config: Option<Config>,
|
||||||
dependency_id: &str,
|
dependency_id: &str,
|
||||||
mut dep_config: Config,
|
mut dep_config: Config,
|
||||||
rules_path: &Path,
|
rules_path: &Path,
|
||||||
@@ -76,7 +80,10 @@ pub fn apply_dependency_configuration(
|
|||||||
serde_yaml::from_reader(std::fs::File::open(rules_path)?)?;
|
serde_yaml::from_reader(std::fs::File::open(rules_path)?)?;
|
||||||
let mut cfgs = LinearMap::new();
|
let mut cfgs = LinearMap::new();
|
||||||
cfgs.insert(dependency_id, Cow::Owned(dep_config.clone()));
|
cfgs.insert(dependency_id, Cow::Owned(dep_config.clone()));
|
||||||
cfgs.insert(package_id, Cow::Owned(config.clone()));
|
match config {
|
||||||
|
Some(config) => cfgs.insert(package_id, Cow::Owned(config.clone())),
|
||||||
|
None => cfgs.insert(package_id, Cow::Owned(serde_json::Map::new())),
|
||||||
|
};
|
||||||
let rule_check = rules
|
let rule_check = rules
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|r| r.apply(dependency_id, &mut dep_config, &mut cfgs))
|
.map(|r| r.apply(dependency_id, &mut dep_config, &mut cfgs))
|
||||||
|
|||||||
@@ -201,18 +201,19 @@ fn inner_main() -> Result<(), anyhow::Error> {
|
|||||||
("dependency", Some(sub_m)) => match sub_m.subcommand() {
|
("dependency", Some(sub_m)) => match sub_m.subcommand() {
|
||||||
("check", Some(sub_m)) => {
|
("check", Some(sub_m)) => {
|
||||||
let parent_config = serde_yaml::from_reader(stdin())?;
|
let parent_config = serde_yaml::from_reader(stdin())?;
|
||||||
let config = serde_yaml::from_reader(
|
let cfg_path =
|
||||||
File::open(
|
Path::new(sub_m.value_of("mountpoint").unwrap()).join("start9/config.yaml");
|
||||||
Path::new(sub_m.value_of("mountpoint").unwrap()).join("start9/config.yaml"),
|
let config = if cfg_path.exists() {
|
||||||
)
|
Some(serde_yaml::from_reader(File::open(cfg_path).unwrap()).unwrap())
|
||||||
.unwrap(),
|
} else {
|
||||||
)?;
|
None
|
||||||
|
};
|
||||||
let rules_path = Path::new(sub_m.value_of("assets").unwrap());
|
let rules_path = Path::new(sub_m.value_of("assets").unwrap());
|
||||||
let name = sub_m.value_of("dependent_package_id").unwrap();
|
let name = sub_m.value_of("dependent_package_id").unwrap();
|
||||||
let parent_name = sub_m.value_of("dependency_package_id").unwrap();
|
let parent_name = sub_m.value_of("dependency_package_id").unwrap();
|
||||||
match validate_dependency_configuration(
|
match validate_dependency_configuration(
|
||||||
name,
|
name,
|
||||||
config,
|
&config,
|
||||||
parent_name,
|
parent_name,
|
||||||
parent_config,
|
parent_config,
|
||||||
rules_path,
|
rules_path,
|
||||||
@@ -229,12 +230,13 @@ fn inner_main() -> Result<(), anyhow::Error> {
|
|||||||
}
|
}
|
||||||
("auto-configure", Some(sub_m)) => {
|
("auto-configure", Some(sub_m)) => {
|
||||||
let dep_config = serde_yaml::from_reader(stdin())?;
|
let dep_config = serde_yaml::from_reader(stdin())?;
|
||||||
let config = serde_yaml::from_reader(
|
let cfg_path =
|
||||||
File::open(
|
Path::new(sub_m.value_of("mountpoint").unwrap()).join("start9/config.yaml");
|
||||||
Path::new(sub_m.value_of("mountpoint").unwrap()).join("start9/config.yaml"),
|
let config = if cfg_path.exists() {
|
||||||
)
|
Some(serde_yaml::from_reader(File::open(cfg_path).unwrap()).unwrap())
|
||||||
.unwrap(),
|
} else {
|
||||||
)?;
|
None
|
||||||
|
};
|
||||||
let rules_path = Path::new(sub_m.value_of("assets").unwrap());
|
let rules_path = Path::new(sub_m.value_of("assets").unwrap());
|
||||||
let package_id = sub_m.value_of("dependent_package_id").unwrap();
|
let package_id = sub_m.value_of("dependent_package_id").unwrap();
|
||||||
let dependency_id = sub_m.value_of("dependency_package_id").unwrap();
|
let dependency_id = sub_m.value_of("dependency_package_id").unwrap();
|
||||||
|
|||||||
Reference in New Issue
Block a user