diff --git a/src/bundle/osx_bundle.rs b/src/bundle/osx_bundle.rs index d47f8a8..2e1b439 100644 --- a/src/bundle/osx_bundle.rs +++ b/src/bundle/osx_bundle.rs @@ -56,7 +56,12 @@ pub fn bundle_project(settings: &Settings) -> crate::Result> { for src in settings.resource_files() { let src = src?; - let dest = resources_dir.join(common::resource_relpath(&src)); + let dest_dir = if settings.colocate() { + bundle_directory.join("MacOS") + } else { + resources_dir.clone() + }; + let dest = dest_dir.join(common::resource_relpath(&src)); common::copy_file(&src, &dest) .chain_err(|| format!("Failed to copy resource file {src:?}"))?; } diff --git a/src/bundle/settings.rs b/src/bundle/settings.rs index a53dd1b..e877db7 100644 --- a/src/bundle/settings.rs +++ b/src/bundle/settings.rs @@ -67,6 +67,7 @@ struct BundleSettings { icon: Option>, version: Option, resources: Option>, + colocate: Option, copyright: Option, category: Option, short_description: Option, @@ -362,6 +363,11 @@ impl Settings { } } + // TODO What does this flag do on non-MacOS OSes? + pub fn colocate(&self) -> bool { + self.bundle_settings.colocate.unwrap_or(false) + } + pub fn version_string(&self) -> &dyn Display { match self.bundle_settings.version.as_ref() { Some(v) => v,