config support yaml

This commit is contained in:
mbecker20
2025-08-08 22:33:21 -07:00
parent cb7943ed5b
commit 558fb7bade
9 changed files with 26 additions and 10 deletions
Generated
+6 -5
View File
@@ -1075,6 +1075,7 @@ dependencies = [
"indexmap 2.10.0",
"serde",
"serde_json",
"serde_yaml_ng",
"thiserror 2.0.12",
"toml",
"wildcard",
@@ -2688,7 +2689,7 @@ dependencies = [
"rustls 0.23.31",
"serde",
"serde_json",
"serde_yaml",
"serde_yaml_ng",
"serror",
"sha2",
"slack_client_rs",
@@ -2742,7 +2743,7 @@ dependencies = [
"rustls 0.23.31",
"serde",
"serde_json",
"serde_yaml",
"serde_yaml_ng",
"serror",
"sysinfo",
"tokio",
@@ -4627,10 +4628,10 @@ dependencies = [
]
[[package]]
name = "serde_yaml"
version = "0.9.34+deprecated"
name = "serde_yaml_ng"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
checksum = "7b4db627b98b36d4203a7b458cf3573730f2bb591b28871d916dfa9efabfd41f"
dependencies = [
"indexmap 2.10.0",
"itoa",
+1 -1
View File
@@ -68,8 +68,8 @@ ipnetwork = { version = "0.21.1", features = ["serde"] }
indexmap = { version = "2.10.0", features = ["serde"] }
serde = { version = "1.0.219", features = ["derive"] }
strum = { version = "0.27.2", features = ["derive"] }
serde_yaml_ng = "0.10.0"
serde_json = "1.0.142"
serde_yaml = "0.9.34-deprecated"
serde_qs = "0.15.0"
toml = "0.9.5"
+1 -1
View File
@@ -50,7 +50,7 @@ tokio-util.workspace = true
axum-extra.workspace = true
tower-http.workspace = true
serde_json.workspace = true
serde_yaml.workspace = true
serde_yaml_ng.workspace = true
typeshare.workspace = true
chrono-tz.workspace = true
indexmap.workspace = true
+1 -1
View File
@@ -29,7 +29,7 @@ pub fn extract_services_into_res(
compose_contents: &str,
res: &mut Vec<StackServiceNames>,
) -> anyhow::Result<()> {
let compose = serde_yaml::from_str::<ComposeFile>(compose_contents)
let compose = serde_yaml_ng::from_str::<ComposeFile>(compose_contents)
.context("failed to parse service names from compose contents")?;
let mut services = Vec::with_capacity(compose.services.capacity());
+1 -1
View File
@@ -39,7 +39,7 @@ tokio-stream.workspace = true
portable-pty.workspace = true
axum-server.workspace = true
serde_json.workspace = true
serde_yaml.workspace = true
serde_yaml_ng.workspace = true
tokio-util.workspace = true
arc-swap.workspace = true
futures.workspace = true
+1 -1
View File
@@ -562,7 +562,7 @@ impl Resolve<super::Args> for ComposeUp {
return Ok(res);
}
let compose =
serde_yaml::from_str::<ComposeFile>(&config_log.stdout)
serde_yaml_ng::from_str::<ComposeFile>(&config_log.stdout)
.context("Failed to parse compose contents")?;
// Record sanitized compose config output
res.compose_config = Some(config_log.stdout);
+1
View File
@@ -9,6 +9,7 @@ homepage.workspace = true
[dependencies]
serde_json.workspace = true
serde_yaml_ng.workspace = true
thiserror.workspace = true
indexmap.workspace = true
wildcard.workspace = true
+6
View File
@@ -27,6 +27,12 @@ pub enum Error {
#[error("Failed to parse toml file at {path} | {e:?}")]
ParseToml { e: toml::de::Error, path: PathBuf },
#[error("Failed to parse yaml file at {path} | {e:?}")]
ParseYaml {
e: serde_yaml_ng::Error,
path: PathBuf,
},
#[error("Failed to parse json file at {path} | {e:?}")]
ParseJson { e: serde_json::Error, path: PathBuf },
+8
View File
@@ -270,6 +270,14 @@ pub fn parse_config_file<T: DeserializeOwned>(
path: file.to_path_buf(),
})?
}
Some("yaml") | Some("yml") => {
serde_yaml_ng::from_reader(file_handle).map_err(|e| {
Error::ParseYaml {
e,
path: file.to_path_buf(),
}
})?
}
Some("json") => {
serde_json::from_reader(file_handle).map_err(|e| {
Error::ParseJson {