| 196 | } |
| 197 | manifest.write_artifacts = self.out.is_some(); |
| 198 | manifest.artifact_root = artifact_root; |
| 199 | manifest.latency = self.latency; |
| 200 | manifest |
| 201 | } |
| 202 | } |
| 203 | |
| 204 | pub(crate) fn decode_build_manifest(text: &str) -> Result<DecodedBuildManifest, String> { |
| 205 | let values = fs_utils::build_manifest::parse(text).map_err(|err| err.0)?; |
| 206 | let root = values |
| 207 | .string("root") |
| 208 | .ok_or_else(|| "build manifest missing `root`".to_owned())?; |
| 209 | let target = values |
| 210 | .get("target") |
| 211 | .map(parse_target_mode) |
| 212 | .transpose()? |
| 213 | .unwrap_or(TargetMode::Hosted); |
| 214 | let stdlib = values |
| 215 | .get("stdlib") |
| 216 | .map(|value| parse_stdlib_policy(value, target)) |
| 217 | .transpose()?; |
| 218 | let import_closure = values.bool("import_closure").map_err(|err| err.0)?; |