diff --git a/cargo/src/package/mod.rs b/cargo/src/package/mod.rs index 99bc1b00..10b46242 100644 --- a/cargo/src/package/mod.rs +++ b/cargo/src/package/mod.rs @@ -278,7 +278,7 @@ fn build_manifest(config: &Config, layout: &Layout, package: &Package, assets: Option<&AssetsArtifact<'_>>, - dev_id_suffix: Option>, + id_suffix: Option>, name_override: Option>) -> CargoResult<()> { config.log().verbose(|mut log| { @@ -286,20 +286,32 @@ fn build_manifest(config: &Config, log.status("Manifest", msg); }); - if dev_id_suffix.is_some() || name_override.is_some() { - // TODO: modify ManifestSource + let mut manifest = if let Some(metadata) = assets.and_then(|a| a.metadata.as_ref()) { + let source = ManifestSource { package, + metadata: metadata.into() }; + Manifest::try_from_source(source) + } else { + let metadata = playdate_metadata(package); + let source = ManifestSource { package, + metadata: metadata.as_ref() }; + Manifest::try_from_source(source) + }.map_err(|err| anyhow!(err))?; + + // Override fields. This is a hacky bot-so-braking hot-fix for issue #354. + // This is a temporary solution only until full metadata inheritance is implemented. + if id_suffix.is_some() || name_override.is_some() { + if let Some(id) = id_suffix { + log::trace!("Overriding bundle_id from {}", manifest.bundle_id); + manifest.bundle_id.push_str(".example."); + manifest.bundle_id.push_str(&id); + log::trace!(" to {}", manifest.bundle_id); + } + if let Some(name) = name_override { + log::trace!("Overriding program name {} -> {name}", manifest.name); + manifest.name = name.into_owned(); + } } - let manifest = if let Some(metadata) = assets.and_then(|a| a.metadata.as_ref()) { - let source = ManifestSource { package, - metadata: metadata.into() }; - Manifest::try_from_source(source) - } else { - let metadata = playdate_metadata(package); - let source = ManifestSource { package, - metadata: metadata.as_ref() }; - Manifest::try_from_source(source) - }.map_err(|err| anyhow!(err))?; std::fs::write(layout.manifest(), manifest.to_manifest_string())?; Ok(()) }