From d9fc71a601c0fe333125ec30652ba8a96312c200 Mon Sep 17 00:00:00 2001 From: Jengamon Date: Mon, 21 Aug 2023 08:45:40 -0700 Subject: [PATCH] Add colocate flag for game bundling on MacOS --- src/bundle/osx_bundle.rs | 7 ++++++- src/bundle/settings.rs | 6 ++++++ 2 files changed, 12 insertions(+), 1 deletion(-) 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,