This commit is contained in:
2025-11-09 10:10:40 +00:00
parent ec1c1c89cd
commit 5c8dc86640
5 changed files with 152591 additions and 61 deletions

View File

@@ -27,6 +27,7 @@ pub enum RawEnumType {
Progress = 105,
SetExpected = 106,
PostBuildLogLine = 107,
FetchStatus = 108,
}
#[derive(Debug, Deserialize)]
@@ -110,9 +111,17 @@ impl<'a> TryFrom<RawAction<'a>> for Action<'a> {
StartFields::Substitute { source, target }
}
ActionType::QueryPathInfo => StartFields::QueryPathInfo,
ActionType::QueryPathInfo => {
let raw_fields = val.fields.ok_or_else(|| missing("fields"))?.get();
let (path, source) =
serde_json::from_str(raw_fields).context("invalid fields")?;
StartFields::QueryPathInfo { path, source }
}
ActionType::PostBuildHook => StartFields::PostBuildHook,
ActionType::BuildWaiting => StartFields::BuildWaiting,
ActionType::FetchTree => StartFields::FetchTree,
};
Action::Start {
@@ -128,13 +137,23 @@ impl<'a> TryFrom<RawAction<'a>> for Action<'a> {
let raw_fields = val.fields.ok_or_else(|| missing("fields"))?.get();
let fields = match val.any_type.ok_or_else(|| missing("type"))? {
100 => todo!("FileLinked({raw_fields})"),
100 => {
let (val1, val2) =
serde_json::from_str(raw_fields).context("invalid fields")?;
ResultFields::FileLinked { val1, val2 }
}
101 => {
let [line] = serde_json::from_str(raw_fields).context("invalid fields")?;
ResultFields::BuildLogLine(line)
}
102 => todo!("UntrustedPath({raw_fields})"),
103 => todo!("CorruptedPath({raw_fields})"),
102 => {
let [path] = serde_json::from_str(raw_fields).context("invalid fields")?;
ResultFields::UntrustedPath(path)
}
103 => {
let [path] = serde_json::from_str(raw_fields).context("invalid fields")?;
ResultFields::CorruptedPath(path)
}
104 => {
let [phase] = serde_json::from_str(raw_fields).context("invalid fields")?;
ResultFields::SetPhase(phase)
@@ -154,7 +173,15 @@ impl<'a> TryFrom<RawAction<'a>> for Action<'a> {
let (action, expected) = serde_json::from_str(raw_fields).unwrap();
ResultFields::SetExpected { action, expected }
}
107 => todo!("PostBuildLogLine({raw_fields})"),
107 => {
let [line] = serde_json::from_str(raw_fields).context("invalid fields")?;
ResultFields::PostBuildLogLine(line)
}
108 => {
let [status] =
serde_json::from_str(raw_fields).context("invalid fields")?;
ResultFields::FetchStatus(status)
}
v => eyre::bail!("Unknown result type `{v}`"),
};