From 6b6f456517c70c8a7f83678b7f8c39721fd7eaa8 Mon Sep 17 00:00:00 2001 From: Robin North Date: Thu, 31 Jan 2019 13:39:30 +0000 Subject: [PATCH 01/53] Initial implementation of XR Settings build action Enables updating XR Settings for build target - Set VR SDKs - Set VR support - Set ARCore support (Android only) --- UnityBuild-XRSettings.meta | 8 +++ UnityBuild-XRSettings/Editor.meta | 8 +++ UnityBuild-XRSettings/Editor/XRSettings.cs | 72 +++++++++++++++++++ .../Editor/XRSettings.cs.meta | 11 +++ UnityBuild-XRSettings/README.md | 2 + UnityBuild-XRSettings/README.md.meta | 7 ++ 6 files changed, 108 insertions(+) create mode 100644 UnityBuild-XRSettings.meta create mode 100644 UnityBuild-XRSettings/Editor.meta create mode 100644 UnityBuild-XRSettings/Editor/XRSettings.cs create mode 100644 UnityBuild-XRSettings/Editor/XRSettings.cs.meta create mode 100644 UnityBuild-XRSettings/README.md create mode 100644 UnityBuild-XRSettings/README.md.meta diff --git a/UnityBuild-XRSettings.meta b/UnityBuild-XRSettings.meta new file mode 100644 index 0000000..b518eb5 --- /dev/null +++ b/UnityBuild-XRSettings.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a5209becd02e09d48a85b9802cad3daf +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityBuild-XRSettings/Editor.meta b/UnityBuild-XRSettings/Editor.meta new file mode 100644 index 0000000..1e7519a --- /dev/null +++ b/UnityBuild-XRSettings/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 594ad643f17f3db4cb2a8c8d26184fb9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityBuild-XRSettings/Editor/XRSettings.cs b/UnityBuild-XRSettings/Editor/XRSettings.cs new file mode 100644 index 0000000..3dfc865 --- /dev/null +++ b/UnityBuild-XRSettings/Editor/XRSettings.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +namespace SuperSystems.UnityBuild +{ + public class XRSettings : BuildAction, IPreBuildPerPlatformAction + { + public enum SDK + { + None, + Cardboard, + Daydream, + MockHMD, + Oculus, + OpenVR, + StereoDisplay, + } + + // Mapping of SDKs enum to Unity's inconsistent internal names + readonly Dictionary sdkNames = new Dictionary() + { + {SDK.None, "None"}, + {SDK.Cardboard, "cardboard"}, + {SDK.Daydream, "daydream"}, + {SDK.MockHMD, "MockHMD"}, + {SDK.Oculus, "Oculus"}, + {SDK.OpenVR, "OpenVR"}, + {SDK.StereoDisplay, "stereo"} + }; + + [Header("XR Settings")] + [Tooltip("VR SDKs for build target, in order of priority")] + public List Sdks = new List(); + [Tooltip("Whether or not build target supports VR")] + public bool VRSupported; + + [Header("Platform-Specific Settings")] + [Tooltip("Whether or not build target supports ARCore (Android only)")] + public bool ARCoreSupported; + + public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) + { + // Get valid SDKs for platform + string[] validSDKs = PlayerSettings.GetAvailableVirtualRealitySDKs(platform.targetGroup); + + // Build list of valid SDKs to set + List sdks = new List(); + + foreach (SDK sdk in Sdks) + { + string sdkName = sdkNames[sdk]; + + if (Array.IndexOf(validSDKs, sdkName) != -1) + { + sdks.Add(sdkName); + } + } + + // Update player settings + PlayerSettings.SetVirtualRealitySupported(platform.targetGroup, VRSupported); + PlayerSettings.SetVirtualRealitySDKs(platform.targetGroup, sdks.ToArray()); + + if (platform.targetGroup == BuildTargetGroup.Android) + { + PlayerSettings.Android.ARCoreEnabled = ARCoreSupported; + } + } + } + +} diff --git a/UnityBuild-XRSettings/Editor/XRSettings.cs.meta b/UnityBuild-XRSettings/Editor/XRSettings.cs.meta new file mode 100644 index 0000000..700d3b6 --- /dev/null +++ b/UnityBuild-XRSettings/Editor/XRSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9895d1b92e2dd6a41b67909ee897d770 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityBuild-XRSettings/README.md b/UnityBuild-XRSettings/README.md new file mode 100644 index 0000000..6c15e4e --- /dev/null +++ b/UnityBuild-XRSettings/README.md @@ -0,0 +1,2 @@ +# SuperUnityBuild - XR Settings +> Modify player XR settings \ No newline at end of file diff --git a/UnityBuild-XRSettings/README.md.meta b/UnityBuild-XRSettings/README.md.meta new file mode 100644 index 0000000..fd1fdd6 --- /dev/null +++ b/UnityBuild-XRSettings/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e406c2ed22747424ca6f2682096c9598 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: From 0407ac307e58b163779a2794e9206df9deb7c693 Mon Sep 17 00:00:00 2001 From: Robin North Date: Mon, 28 Oct 2019 09:31:06 +0000 Subject: [PATCH 02/53] Add ability to set stereo rendering mode --- UnityBuild-XRSettings/Editor/XRSettings.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/UnityBuild-XRSettings/Editor/XRSettings.cs b/UnityBuild-XRSettings/Editor/XRSettings.cs index 3dfc865..7689a96 100644 --- a/UnityBuild-XRSettings/Editor/XRSettings.cs +++ b/UnityBuild-XRSettings/Editor/XRSettings.cs @@ -35,6 +35,8 @@ public enum SDK public List Sdks = new List(); [Tooltip("Whether or not build target supports VR")] public bool VRSupported; + [Tooltip("Stereo rendering mode to use")] + public StereoRenderingPath StereoRenderingMode; [Header("Platform-Specific Settings")] [Tooltip("Whether or not build target supports ARCore (Android only)")] @@ -61,6 +63,7 @@ public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform // Update player settings PlayerSettings.SetVirtualRealitySupported(platform.targetGroup, VRSupported); PlayerSettings.SetVirtualRealitySDKs(platform.targetGroup, sdks.ToArray()); + PlayerSettings.stereoRenderingPath = StereoRenderingMode; if (platform.targetGroup == BuildTargetGroup.Android) { @@ -68,5 +71,4 @@ public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform } } } - } From 49ab9ee9aa7538c3f8d84ac7beef948ff00b2dda Mon Sep 17 00:00:00 2001 From: Robin North Date: Mon, 3 Aug 2020 10:17:39 +0100 Subject: [PATCH 03/53] Add support for setting Oculus v2 signing option --- UnityBuild-XRSettings/Editor/XRSettings.cs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/UnityBuild-XRSettings/Editor/XRSettings.cs b/UnityBuild-XRSettings/Editor/XRSettings.cs index 7689a96..e0d1e8e 100644 --- a/UnityBuild-XRSettings/Editor/XRSettings.cs +++ b/UnityBuild-XRSettings/Editor/XRSettings.cs @@ -1,3 +1,7 @@ +#if UNITY_2017_4 || UNITY_2018_4 || UNITY_2019_2_OR_NEWER +#define SUPPORTS_OCULUS_V2_SIGNING +#endif + using System; using System.Collections.Generic; using UnityEditor; @@ -38,8 +42,14 @@ public enum SDK [Tooltip("Stereo rendering mode to use")] public StereoRenderingPath StereoRenderingMode; +#if SUPPORTS_OCULUS_V2_SIGNING + [Header("SDK-Specific Settings")] + [Tooltip("Oculus: Whether or not to use v2 APK signing (enable for Quest, disable for Gear VR/Go)")] + public bool OculusV2Signing = true; +#endif + [Header("Platform-Specific Settings")] - [Tooltip("Whether or not build target supports ARCore (Android only)")] + [Tooltip("Android: Whether or not build target supports ARCore")] public bool ARCoreSupported; public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) @@ -65,6 +75,10 @@ public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform PlayerSettings.SetVirtualRealitySDKs(platform.targetGroup, sdks.ToArray()); PlayerSettings.stereoRenderingPath = StereoRenderingMode; +#if SUPPORTS_OCULUS_V2_SIGNING + PlayerSettings.VROculus.v2Signing = OculusV2Signing; +#endif + if (platform.targetGroup == BuildTargetGroup.Android) { PlayerSettings.Android.ARCoreEnabled = ARCoreSupported; From ff063bee671981c34b86a75c5075a3d8bab4c3c5 Mon Sep 17 00:00:00 2001 From: Robin North Date: Tue, 4 Aug 2020 10:19:18 +0100 Subject: [PATCH 04/53] Allow XR Plug-in Management settings to be configured post-build --- UnityBuild-XRPluginManagement/Editor/XRPluginManagement.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/UnityBuild-XRPluginManagement/Editor/XRPluginManagement.cs b/UnityBuild-XRPluginManagement/Editor/XRPluginManagement.cs index 1fd838b..e389265 100644 --- a/UnityBuild-XRPluginManagement/Editor/XRPluginManagement.cs +++ b/UnityBuild-XRPluginManagement/Editor/XRPluginManagement.cs @@ -7,7 +7,7 @@ namespace SuperSystems.UnityBuild { - public class XRPluginManagement : BuildAction, IPreBuildAction, IPreBuildPerPlatformAction + public class XRPluginManagement : BuildAction, IPreBuildPerPlatformAction, IPostBuildPerPlatformAction { [Header("XR Settings")] [Tooltip("XR plugin loaders to use for this build")] public List XRPlugins = new List(); @@ -17,7 +17,6 @@ public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform { XRGeneralSettings generalSettings = XRGeneralSettingsPerBuildTarget.XRGeneralSettingsForBuildTarget(platform.targetGroup); XRManagerSettings settingsManager = generalSettings.Manager; - List previousLoaders = settingsManager.loaders; generalSettings.InitManagerOnStart = InitializeXROnStartup; From de3a85d1a04c343ca85d25e0cb427f8baedb6230 Mon Sep 17 00:00:00 2001 From: Robin North Date: Tue, 4 Aug 2020 10:22:33 +0100 Subject: [PATCH 05/53] Allow XR settings to be configured post-build --- UnityBuild-XRSettings/Editor/XRSettings.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityBuild-XRSettings/Editor/XRSettings.cs b/UnityBuild-XRSettings/Editor/XRSettings.cs index e0d1e8e..472c6aa 100644 --- a/UnityBuild-XRSettings/Editor/XRSettings.cs +++ b/UnityBuild-XRSettings/Editor/XRSettings.cs @@ -9,7 +9,7 @@ namespace SuperSystems.UnityBuild { - public class XRSettings : BuildAction, IPreBuildPerPlatformAction + public class XRSettings : BuildAction, IPreBuildPerPlatformAction, IPostBuildPerPlatformAction { public enum SDK { From 4729c77594fefb1bb43c12432c4bfc238b72e312 Mon Sep 17 00:00:00 2001 From: Robin North Date: Thu, 8 Apr 2021 09:34:53 +0100 Subject: [PATCH 06/53] Began PerBuildPlayerSettings action --- UnityBuild-PerBuildPlayerSettings.meta | 8 +++++ UnityBuild-PerBuildPlayerSettings/Editor.meta | 8 +++++ .../Editor/PerBuildPlayerSettings.cs | 29 +++++++++++++++++++ .../Editor/PerBuildPlayerSettings.cs.meta | 11 +++++++ UnityBuild-PerBuildPlayerSettings/README.md | 2 ++ .../README.md.meta | 7 +++++ 6 files changed, 65 insertions(+) create mode 100644 UnityBuild-PerBuildPlayerSettings.meta create mode 100644 UnityBuild-PerBuildPlayerSettings/Editor.meta create mode 100644 UnityBuild-PerBuildPlayerSettings/Editor/PerBuildPlayerSettings.cs create mode 100644 UnityBuild-PerBuildPlayerSettings/Editor/PerBuildPlayerSettings.cs.meta create mode 100644 UnityBuild-PerBuildPlayerSettings/README.md create mode 100644 UnityBuild-PerBuildPlayerSettings/README.md.meta diff --git a/UnityBuild-PerBuildPlayerSettings.meta b/UnityBuild-PerBuildPlayerSettings.meta new file mode 100644 index 0000000..5f90021 --- /dev/null +++ b/UnityBuild-PerBuildPlayerSettings.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6024b0d2dc11f6d4e8a3a0db6deae015 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityBuild-PerBuildPlayerSettings/Editor.meta b/UnityBuild-PerBuildPlayerSettings/Editor.meta new file mode 100644 index 0000000..81757f9 --- /dev/null +++ b/UnityBuild-PerBuildPlayerSettings/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f44a4e5ad5055e34f8abc510986634c4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityBuild-PerBuildPlayerSettings/Editor/PerBuildPlayerSettings.cs b/UnityBuild-PerBuildPlayerSettings/Editor/PerBuildPlayerSettings.cs new file mode 100644 index 0000000..02a9699 --- /dev/null +++ b/UnityBuild-PerBuildPlayerSettings/Editor/PerBuildPlayerSettings.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEditor; +using UnityEngine; +using Object = UnityEngine.Object; + +namespace SuperSystems.UnityBuild +{ + public class PerBuildPlayerSettings : BuildAction, IPreBuildPerPlatformAction, IPostBuildPerPlatformAction + { + [Header("Other Settings")] + [Tooltip("Preloaded assets to set for this build")] public List PreloadedAssets = new List(); + [Tooltip("Whether or not to preserve existing preloaded assets")] public bool PreservePreloadedAssets = true; + + public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) + { + // Set preloaded assets + Object[] preloadedAssets = PlayerSettings.GetPreloadedAssets(); + + List preloadedAssetsList = PreservePreloadedAssets ? + preloadedAssets.ToList() : + new List(); + + preloadedAssetsList.AddRange(PreloadedAssets); + PlayerSettings.SetPreloadedAssets(preloadedAssetsList.ToArray()); + } + } +} diff --git a/UnityBuild-PerBuildPlayerSettings/Editor/PerBuildPlayerSettings.cs.meta b/UnityBuild-PerBuildPlayerSettings/Editor/PerBuildPlayerSettings.cs.meta new file mode 100644 index 0000000..cf32b17 --- /dev/null +++ b/UnityBuild-PerBuildPlayerSettings/Editor/PerBuildPlayerSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2b89407e197689243b5ebba8cc90bd9c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityBuild-PerBuildPlayerSettings/README.md b/UnityBuild-PerBuildPlayerSettings/README.md new file mode 100644 index 0000000..b96fc93 --- /dev/null +++ b/UnityBuild-PerBuildPlayerSettings/README.md @@ -0,0 +1,2 @@ +# SuperUnityBuild - Per-build Player Settings +> Enable per-build Player settings diff --git a/UnityBuild-PerBuildPlayerSettings/README.md.meta b/UnityBuild-PerBuildPlayerSettings/README.md.meta new file mode 100644 index 0000000..23d02e3 --- /dev/null +++ b/UnityBuild-PerBuildPlayerSettings/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e4ac8e39b469e4a42a4df8d7d890d758 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: From 097cc8529761bc8b7759d71e77e17bf80141c6cb Mon Sep 17 00:00:00 2001 From: Robin North Date: Thu, 8 Apr 2021 13:14:00 +0100 Subject: [PATCH 07/53] Update for SuperUnityBuild 1.0.0 release - Update namespace and usings - Update directory names - Update README URLs --- ...Build-AssetBundle.meta => AssetBundle.meta | 0 .../Editor.meta | 0 AssetBundle/Editor/BuildAssetBundles.cs | 95 +++++++++ .../Editor/BuildAssetBundles.cs.meta | 0 .../README.md | 0 .../README.md.meta | 0 ...Build-FileUtility.meta => FileUtility.meta | 0 .../Editor.meta | 0 FileUtility/Editor/FileOperation.cs | 185 +++++++++++++++++ .../Editor/FileOperation.cs.meta | 0 FileUtility/Editor/FolderOperation.cs | 178 +++++++++++++++++ .../Editor/FolderOperation.cs.meta | 0 .../README.md | 0 .../README.md.meta | 0 ...ild-ItchUploader.meta => ItchUploader.meta | 0 .../Editor.meta | 0 ItchUploader/Editor/UploadItch.cs | 188 ++++++++++++++++++ .../Editor/UploadItch.cs.meta | 0 .../README.md | 0 .../README.md.meta | 0 ...errideDefines.meta => OverrideDefines.meta | 0 .../Editor.meta | 2 +- OverrideDefines/Editor/OverrideDefines.cs | 41 ++++ .../Editor/OverrideDefines.cs.meta | 0 .../README.md | 0 .../README.md.meta | 2 +- ...eManagement.meta => PackageManagement.meta | 0 .../Editor.meta | 0 .../Editor/PackageManagement.cs | 4 +- .../Editor/PackageManagement.cs.meta | 0 .../README.md | 0 .../README.md.meta | 0 ...ttings.meta => PerBuildPlayerSettings.meta | 0 .../Editor.meta | 0 .../Editor/PerBuildPlayerSettings.cs | 3 +- .../Editor/PerBuildPlayerSettings.cs.meta | 0 .../README.md | 0 .../README.md.meta | 0 README.md | 24 +-- ...ild-ScriptRunner.meta => ScriptRunner.meta | 0 .../Editor.meta | 0 ScriptRunner/Editor/ScriptRunner.cs | 39 ++++ .../Editor/ScriptRunner.cs.meta | 0 .../README.md | 0 .../README.md.meta | 0 .../Editor/BuildAssetBundles.cs | 96 --------- .../Editor/FileOperation.cs | 188 ------------------ .../Editor/FolderOperation.cs | 177 ----------------- UnityBuild-ItchUploader/Editor/UploadItch.cs | 187 ----------------- .../Editor/OverrideDefines.cs | 45 ----- .../Editor/ScriptRunner.cs | 41 ---- UnityBuild-ZipFile/Editor/ZipFileOperation.cs | 68 ------- ...Management.meta => XRPluginManagement.meta | 0 .../Editor.meta | 0 .../Editor/XRPluginManagement.cs | 3 +- .../Editor/XRPluginManagement.cs.meta | 0 .../README.md | 0 .../README.md.meta | 0 UnityBuild-XRSettings.meta => XRSettings.meta | 0 .../Editor.meta | 2 +- .../Editor/XRSettings.cs | 5 +- .../Editor/XRSettings.cs.meta | 0 .../README.md | 0 .../README.md.meta | 2 +- UnityBuild-ZipFile.meta => ZipFile.meta | 0 {UnityBuild-ZipFile => ZipFile}/Editor.meta | 0 .../Editor/Ionic.Zip.License.txt | 0 .../Editor/Ionic.Zip.License.txt.meta | 0 .../Editor/Ionic.Zip.dll | Bin .../Editor/Ionic.Zip.dll.meta | 0 ZipFile/Editor/ZipFileOperation.cs | 66 ++++++ .../Editor/ZipFileOperation.cs.meta | 0 {UnityBuild-ZipFile => ZipFile}/README.md | 0 .../README.md.meta | 0 74 files changed, 817 insertions(+), 824 deletions(-) rename UnityBuild-AssetBundle.meta => AssetBundle.meta (100%) rename {UnityBuild-AssetBundle => AssetBundle}/Editor.meta (100%) create mode 100644 AssetBundle/Editor/BuildAssetBundles.cs rename {UnityBuild-AssetBundle => AssetBundle}/Editor/BuildAssetBundles.cs.meta (100%) rename {UnityBuild-AssetBundle => AssetBundle}/README.md (100%) rename {UnityBuild-AssetBundle => AssetBundle}/README.md.meta (100%) rename UnityBuild-FileUtility.meta => FileUtility.meta (100%) rename {UnityBuild-FileUtility => FileUtility}/Editor.meta (100%) create mode 100644 FileUtility/Editor/FileOperation.cs rename {UnityBuild-FileUtility => FileUtility}/Editor/FileOperation.cs.meta (100%) create mode 100644 FileUtility/Editor/FolderOperation.cs rename {UnityBuild-FileUtility => FileUtility}/Editor/FolderOperation.cs.meta (100%) rename {UnityBuild-FileUtility => FileUtility}/README.md (100%) rename {UnityBuild-FileUtility => FileUtility}/README.md.meta (100%) rename UnityBuild-ItchUploader.meta => ItchUploader.meta (100%) rename {UnityBuild-ItchUploader => ItchUploader}/Editor.meta (100%) create mode 100644 ItchUploader/Editor/UploadItch.cs rename {UnityBuild-ItchUploader => ItchUploader}/Editor/UploadItch.cs.meta (100%) rename {UnityBuild-ItchUploader => ItchUploader}/README.md (100%) rename {UnityBuild-ItchUploader => ItchUploader}/README.md.meta (100%) rename UnityBuild-OverrideDefines.meta => OverrideDefines.meta (100%) rename {UnityBuild-OverrideDefines => OverrideDefines}/Editor.meta (79%) create mode 100644 OverrideDefines/Editor/OverrideDefines.cs rename {UnityBuild-OverrideDefines => OverrideDefines}/Editor/OverrideDefines.cs.meta (100%) rename {UnityBuild-OverrideDefines => OverrideDefines}/README.md (100%) rename {UnityBuild-OverrideDefines => OverrideDefines}/README.md.meta (77%) rename UnityBuild-PackageManagement.meta => PackageManagement.meta (100%) rename {UnityBuild-PackageManagement => PackageManagement}/Editor.meta (100%) rename {UnityBuild-PackageManagement => PackageManagement}/Editor/PackageManagement.cs (95%) rename {UnityBuild-PackageManagement => PackageManagement}/Editor/PackageManagement.cs.meta (100%) rename {UnityBuild-PackageManagement => PackageManagement}/README.md (100%) rename {UnityBuild-PackageManagement => PackageManagement}/README.md.meta (100%) rename UnityBuild-PerBuildPlayerSettings.meta => PerBuildPlayerSettings.meta (100%) rename {UnityBuild-PerBuildPlayerSettings => PerBuildPlayerSettings}/Editor.meta (100%) rename {UnityBuild-PerBuildPlayerSettings => PerBuildPlayerSettings}/Editor/PerBuildPlayerSettings.cs (94%) rename {UnityBuild-PerBuildPlayerSettings => PerBuildPlayerSettings}/Editor/PerBuildPlayerSettings.cs.meta (100%) rename {UnityBuild-PerBuildPlayerSettings => PerBuildPlayerSettings}/README.md (100%) rename {UnityBuild-PerBuildPlayerSettings => PerBuildPlayerSettings}/README.md.meta (100%) rename UnityBuild-ScriptRunner.meta => ScriptRunner.meta (100%) rename {UnityBuild-ScriptRunner => ScriptRunner}/Editor.meta (100%) create mode 100644 ScriptRunner/Editor/ScriptRunner.cs rename {UnityBuild-ScriptRunner => ScriptRunner}/Editor/ScriptRunner.cs.meta (100%) rename {UnityBuild-ScriptRunner => ScriptRunner}/README.md (100%) rename {UnityBuild-ScriptRunner => ScriptRunner}/README.md.meta (100%) delete mode 100644 UnityBuild-AssetBundle/Editor/BuildAssetBundles.cs delete mode 100644 UnityBuild-FileUtility/Editor/FileOperation.cs delete mode 100644 UnityBuild-FileUtility/Editor/FolderOperation.cs delete mode 100644 UnityBuild-ItchUploader/Editor/UploadItch.cs delete mode 100644 UnityBuild-OverrideDefines/Editor/OverrideDefines.cs delete mode 100644 UnityBuild-ScriptRunner/Editor/ScriptRunner.cs delete mode 100644 UnityBuild-ZipFile/Editor/ZipFileOperation.cs rename UnityBuild-XRPluginManagement.meta => XRPluginManagement.meta (100%) rename {UnityBuild-XRPluginManagement => XRPluginManagement}/Editor.meta (100%) rename {UnityBuild-XRPluginManagement => XRPluginManagement}/Editor/XRPluginManagement.cs (94%) rename {UnityBuild-XRPluginManagement => XRPluginManagement}/Editor/XRPluginManagement.cs.meta (100%) rename {UnityBuild-XRPluginManagement => XRPluginManagement}/README.md (100%) rename {UnityBuild-XRPluginManagement => XRPluginManagement}/README.md.meta (100%) rename UnityBuild-XRSettings.meta => XRSettings.meta (100%) rename {UnityBuild-XRSettings => XRSettings}/Editor.meta (77%) rename {UnityBuild-XRSettings => XRSettings}/Editor/XRSettings.cs (97%) rename {UnityBuild-XRSettings => XRSettings}/Editor/XRSettings.cs.meta (100%) rename {UnityBuild-XRSettings => XRSettings}/README.md (100%) rename {UnityBuild-XRSettings => XRSettings}/README.md.meta (75%) rename UnityBuild-ZipFile.meta => ZipFile.meta (100%) rename {UnityBuild-ZipFile => ZipFile}/Editor.meta (100%) rename {UnityBuild-ZipFile => ZipFile}/Editor/Ionic.Zip.License.txt (100%) rename {UnityBuild-ZipFile => ZipFile}/Editor/Ionic.Zip.License.txt.meta (100%) rename {UnityBuild-ZipFile => ZipFile}/Editor/Ionic.Zip.dll (100%) rename {UnityBuild-ZipFile => ZipFile}/Editor/Ionic.Zip.dll.meta (100%) create mode 100644 ZipFile/Editor/ZipFileOperation.cs rename {UnityBuild-ZipFile => ZipFile}/Editor/ZipFileOperation.cs.meta (100%) rename {UnityBuild-ZipFile => ZipFile}/README.md (100%) rename {UnityBuild-ZipFile => ZipFile}/README.md.meta (100%) diff --git a/UnityBuild-AssetBundle.meta b/AssetBundle.meta similarity index 100% rename from UnityBuild-AssetBundle.meta rename to AssetBundle.meta diff --git a/UnityBuild-AssetBundle/Editor.meta b/AssetBundle/Editor.meta similarity index 100% rename from UnityBuild-AssetBundle/Editor.meta rename to AssetBundle/Editor.meta diff --git a/AssetBundle/Editor/BuildAssetBundles.cs b/AssetBundle/Editor/BuildAssetBundles.cs new file mode 100644 index 0000000..89f4275 --- /dev/null +++ b/AssetBundle/Editor/BuildAssetBundles.cs @@ -0,0 +1,95 @@ +using System.IO; +using System.Text; +using SuperUnityBuild.BuildTool; +using UnityEditor; +using UnityEngine; + +namespace SuperUnityBuild.BuildActions +{ + public sealed class BuildAssetBundles : BuildAction, IPreBuildPerPlatformAction + { + #region Public Variables + + [SuperUnityBuild.BuildTool.FilePath(true, true, "Select AssetBundle output directory.")] + public string baseBuildPath = Path.Combine("bin", "bundles"); + + public string innerBuildPath = Path.Combine("$PLATFORM", "$ARCHITECTURE"); + +#if UNITY_5_3 || UNITY_5_4_OR_NEWER + public BuildAssetBundleOptions options = BuildAssetBundleOptions.ChunkBasedCompression; +#else + public BuildAssetBundleOptions options = BuildAssetBundleOptions.None; +#endif + + #endregion + + #region Public Methods + + public override void PerBuildExecute( + BuildReleaseType releaseType, + BuildPlatform platform, + BuildArchitecture architecture, + BuildDistribution distribution, + System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) + { + Build(platform, architecture); + } + + public void BuildAll() + { + string[] buildConfigs = BuildSettings.projectConfigurations.BuildAllKeychains(); + + for (int i = 0; i < buildConfigs.Length; i++) + { + BuildReleaseType releaseType; + BuildPlatform platform; + BuildArchitecture arch; + BuildDistribution dist; + string configKey = buildConfigs[i]; + + BuildSettings.projectConfigurations.ParseKeychain(configKey, out releaseType, out platform, out arch, out dist); + Build(platform, arch); + } + } + + protected override void DrawProperties(SerializedObject obj) + { + EditorGUILayout.PropertyField(obj.FindProperty("baseBuildPath")); + EditorGUILayout.PropertyField(obj.FindProperty("innerBuildPath")); +#if UNITY_2017_3_OR_NEWER + options = (BuildAssetBundleOptions)EditorGUILayout.EnumFlagsField("Options", options); +#else + options = (BuildAssetBundleOptions)((int)(BuildAssetBundleOptions)EditorGUILayout.EnumMaskField("Options", (BuildAssetBundleOptions)((int)(options) << 1)) >> 1); +#endif + + if (GUILayout.Button("Run Now", GUILayout.ExpandWidth(true))) + { + BuildAll(); + } + } + + #endregion + + #region Private Methods + + private void Build(BuildPlatform platform, BuildArchitecture arch) + { + if (!platform.enabled || !arch.enabled) + return; + + // Resolve build path. + StringBuilder platformBundlePath = new StringBuilder(Path.Combine(baseBuildPath, innerBuildPath)); + platformBundlePath.Replace("$PLATFORM", BuildProject.SanitizeFolderName(platform.platformName)); + platformBundlePath.Replace("$ARCHITECTURE", BuildProject.SanitizeFolderName(arch.name)); + + // Create build destination directory if it does not exist. + if (!Directory.Exists(platformBundlePath.ToString())) + Directory.CreateDirectory(platformBundlePath.ToString()); + + // Build AssetBundles. + BuildPipeline.BuildAssetBundles(platformBundlePath.ToString(), options, arch.target); + } + + #endregion + } +} \ No newline at end of file diff --git a/UnityBuild-AssetBundle/Editor/BuildAssetBundles.cs.meta b/AssetBundle/Editor/BuildAssetBundles.cs.meta similarity index 100% rename from UnityBuild-AssetBundle/Editor/BuildAssetBundles.cs.meta rename to AssetBundle/Editor/BuildAssetBundles.cs.meta diff --git a/UnityBuild-AssetBundle/README.md b/AssetBundle/README.md similarity index 100% rename from UnityBuild-AssetBundle/README.md rename to AssetBundle/README.md diff --git a/UnityBuild-AssetBundle/README.md.meta b/AssetBundle/README.md.meta similarity index 100% rename from UnityBuild-AssetBundle/README.md.meta rename to AssetBundle/README.md.meta diff --git a/UnityBuild-FileUtility.meta b/FileUtility.meta similarity index 100% rename from UnityBuild-FileUtility.meta rename to FileUtility.meta diff --git a/UnityBuild-FileUtility/Editor.meta b/FileUtility/Editor.meta similarity index 100% rename from UnityBuild-FileUtility/Editor.meta rename to FileUtility/Editor.meta diff --git a/FileUtility/Editor/FileOperation.cs b/FileUtility/Editor/FileOperation.cs new file mode 100644 index 0000000..c7e8109 --- /dev/null +++ b/FileUtility/Editor/FileOperation.cs @@ -0,0 +1,185 @@ +using System.IO; +using SuperUnityBuild.BuildTool; +using UnityEditor; + +namespace SuperUnityBuild.BuildActions +{ + public class FileOperation : BuildAction, IPreBuildAction, IPreBuildPerPlatformAction, IPostBuildAction, IPostBuildPerPlatformAction + { + public enum Operation + { + Move, + Copy, + Delete, + } + + [SuperUnityBuild.BuildTool.FilePath(false)] + public string inputPath; + [SuperUnityBuild.BuildTool.FilePath(false)] + public string outputPath; + public bool recursiveSearch = true; + public Operation operation; + + public override void Execute() + { + switch (operation) + { + case Operation.Copy: + Copy(inputPath, outputPath); + break; + case Operation.Move: + Move(inputPath, outputPath); + break; + case Operation.Delete: + Delete(inputPath); + break; + } + + AssetDatabase.Refresh(); + } + + public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) + { + string resolvedInputPath = BuildProject.ResolvePath(inputPath.Replace("$BUILDPATH", buildPath), releaseType, platform, architecture, distribution, buildTime); + string resolvedOutputPath = BuildProject.ResolvePath(outputPath.Replace("$BUILDPATH", buildPath), releaseType, platform, architecture, distribution, buildTime); + + switch (operation) + { + case Operation.Copy: + Copy(resolvedInputPath, resolvedOutputPath); + break; + case Operation.Move: + Move(resolvedInputPath, resolvedOutputPath); + break; + case Operation.Delete: + Delete(resolvedInputPath); + break; + } + + AssetDatabase.Refresh(); + } + + protected override void DrawProperties(SerializedObject obj) + { + bool containsWildcard = string.IsNullOrEmpty(inputPath) ? false : Path.GetFileNameWithoutExtension(inputPath).Contains("*"); + + EditorGUILayout.PropertyField(obj.FindProperty("operation")); + + if (containsWildcard) + EditorGUILayout.PropertyField(obj.FindProperty("recursiveSearch")); + + EditorGUILayout.PropertyField(obj.FindProperty("inputPath")); + + if (operation != Operation.Delete) + EditorGUILayout.PropertyField(obj.FindProperty("outputPath")); + } + + private void Move(string inputPath, string outputPath, bool overwrite = true) + { + bool containsWildcard = string.IsNullOrEmpty(inputPath) ? false : Path.GetFileNameWithoutExtension(inputPath).Contains("*"); + + if (!containsWildcard && !File.Exists(inputPath)) + { + // Error. Input does not exist. + return; + } + + if (!containsWildcard && overwrite && File.Exists(outputPath)) + { + // Delete previous output. + FileUtil.DeleteFileOrDirectory(outputPath); + } + + if (containsWildcard) + { + string inputDirectory = Path.GetDirectoryName(inputPath); + string outputDirectory = Path.GetDirectoryName(outputPath); + + SearchOption option = recursiveSearch ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly; + string[] fileList = Directory.GetFiles(inputDirectory, Path.GetFileName(inputPath), option); + + for (int i = 0; i < fileList.Length; i++) + { + string fileName = Path.GetFileName(fileList[i]); + string outputFile = Path.Combine(outputDirectory, fileName); + + if (File.Exists(outputFile)) + FileUtil.DeleteFileOrDirectory(outputFile); + + FileUtil.MoveFileOrDirectory(fileList[i], outputFile); + } + } + else + { + FileUtil.MoveFileOrDirectory(inputPath, outputPath); + } + } + + private void Copy(string inputPath, string outputPath, bool overwrite = true) + { + bool containsWildcard = string.IsNullOrEmpty(inputPath) ? false : Path.GetFileNameWithoutExtension(inputPath).Contains("*"); + + if (!containsWildcard && !File.Exists(inputPath)) + { + // Error. Input does not exist. + return; + } + + if (!containsWildcard && overwrite && File.Exists(outputPath)) + { + // Delete previous output. + FileUtil.DeleteFileOrDirectory(outputPath); + } + + if (containsWildcard) + { + string inputDirectory = Path.GetDirectoryName(inputPath); + string outputDirectory = Path.GetDirectoryName(outputPath); + + SearchOption option = recursiveSearch ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly; + string[] fileList = Directory.GetFiles(inputDirectory, Path.GetFileName(inputPath), option); + + for (int i = 0; i < fileList.Length; i++) + { + string fileName = Path.GetFileName(fileList[i]); + string outputFile = Path.Combine(outputDirectory, fileName); + + if (File.Exists(outputFile)) + FileUtil.DeleteFileOrDirectory(outputFile); + + FileUtil.CopyFileOrDirectory(fileList[i], outputFile); + } + } + else + { + FileUtil.CopyFileOrDirectory(inputPath, outputPath); + } + } + + private void Delete(string inputPath) + { + bool containsWildcard = string.IsNullOrEmpty(inputPath) ? false : Path.GetFileNameWithoutExtension(inputPath).Contains("*"); + + if (!containsWildcard && File.Exists(inputPath)) + { + FileUtil.DeleteFileOrDirectory(inputPath); + } + else if (containsWildcard) + { + string inputDirectory = Path.GetDirectoryName(inputPath); + + SearchOption option = recursiveSearch ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly; + string[] fileList = Directory.GetFiles(inputDirectory, Path.GetFileName(inputPath), option); + + for (int i = 0; i < fileList.Length; i++) + { + FileUtil.DeleteFileOrDirectory(fileList[i]); + } + } + else + { + // Error. File does not exist. + } + } + } +} \ No newline at end of file diff --git a/UnityBuild-FileUtility/Editor/FileOperation.cs.meta b/FileUtility/Editor/FileOperation.cs.meta similarity index 100% rename from UnityBuild-FileUtility/Editor/FileOperation.cs.meta rename to FileUtility/Editor/FileOperation.cs.meta diff --git a/FileUtility/Editor/FolderOperation.cs b/FileUtility/Editor/FolderOperation.cs new file mode 100644 index 0000000..161dc61 --- /dev/null +++ b/FileUtility/Editor/FolderOperation.cs @@ -0,0 +1,178 @@ +using System.Collections; +using System.Diagnostics; +using System.IO; +using SuperUnityBuild.BuildTool; +using UnityEditor; +using UnityEngine; + +namespace SuperUnityBuild.BuildActions +{ + + public class FolderOperation : BuildAction, IPreBuildAction, IPreBuildPerPlatformAction, IPostBuildAction, IPostBuildPerPlatformAction + { + public enum Operation + { + Move, + Copy, + Delete, + } + + [SuperUnityBuild.BuildTool.FilePath(true)] + public string inputPath; + [SuperUnityBuild.BuildTool.FilePath(true)] + public string outputPath; + public Operation operation; + + public override void Execute() + { + switch (operation) + { + case Operation.Copy: + Copy(inputPath, outputPath); + break; + case Operation.Move: + Move(inputPath, outputPath); + break; + case Operation.Delete: + Delete(inputPath); + break; + } + + AssetDatabase.Refresh(); + } + + public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) + { + string resolvedInputPath = BuildProject.ResolvePath(inputPath.Replace("$BUILDPATH", buildPath), releaseType, platform, architecture, distribution, buildTime); + string resolvedOutputPath = BuildProject.ResolvePath(outputPath.Replace("$BUILDPATH", buildPath), releaseType, platform, architecture, distribution, buildTime); + + switch (operation) + { + case Operation.Copy: + Copy(resolvedInputPath, resolvedOutputPath); + break; + case Operation.Move: + Move(resolvedInputPath, resolvedOutputPath); + break; + case Operation.Delete: + Delete(resolvedInputPath); + break; + } + + AssetDatabase.Refresh(); + } + + protected override void DrawProperties(SerializedObject obj) + { + EditorGUILayout.PropertyField(obj.FindProperty("operation")); + EditorGUILayout.PropertyField(obj.FindProperty("inputPath")); + + if (operation != Operation.Delete) + EditorGUILayout.PropertyField(obj.FindProperty("outputPath")); + } + + private void Move(string inputPath, string outputPath, bool overwrite = true) + { + bool success = true; + string errorString = ""; + + if (!Directory.Exists(inputPath)) + { + // Error. Input does not exist. + success = false; + errorString = "Input does not exist."; + } + + // Make sure that all parent directories in path are already created. + string parentPath = Path.GetDirectoryName(outputPath); + if (!Directory.Exists(parentPath)) + { + Directory.CreateDirectory(parentPath); + } + + if (overwrite && Directory.Exists(outputPath)) + { + // Delete previous output. + success = FileUtil.DeleteFileOrDirectory(outputPath); + + if (!success) + errorString = "Could not overwrite existing folder."; + } + + FileUtil.MoveFileOrDirectory(inputPath, outputPath); + + if (!success && !string.IsNullOrEmpty(errorString)) + { + BuildNotificationList.instance.AddNotification(new BuildNotification( + BuildNotification.Category.Error, + "Folder Move Failed.", errorString, + true, null)); + } + } + + private void Copy(string inputPath, string outputPath, bool overwrite = true) + { + bool success = true; + string errorString = ""; + + if (!Directory.Exists(inputPath)) + { + // Error. Input does not exist. + success = false; + errorString = "Input does not exist."; + } + + // Make sure that all parent directories in path are already created. + string parentPath = Path.GetDirectoryName(outputPath); + if (!Directory.Exists(parentPath)) + { + Directory.CreateDirectory(parentPath); + } + + if (success && overwrite && Directory.Exists(outputPath)) + { + // Delete previous output. + success = FileUtil.DeleteFileOrDirectory(outputPath); + + if (!success) + errorString = "Could not overwrite existing folder."; + } + + FileUtil.CopyFileOrDirectory(inputPath, outputPath); + + if (!success && !string.IsNullOrEmpty(errorString)) + { + BuildNotificationList.instance.AddNotification(new BuildNotification( + BuildNotification.Category.Error, + "Folder Copy Failed.", errorString, + true, null)); + } + } + + private void Delete(string inputPath) + { + bool success = true; + string errorString = ""; + + if (Directory.Exists(inputPath)) + { + FileUtil.DeleteFileOrDirectory(inputPath); + } + else + { + // Error. File does not exist. + success = false; + errorString = "Input does not exist."; + } + + if (!success && !string.IsNullOrEmpty(errorString)) + { + BuildNotificationList.instance.AddNotification(new BuildNotification( + BuildNotification.Category.Error, + "Folder Delete Failed.", errorString, + true, null)); + } + } + } + +} \ No newline at end of file diff --git a/UnityBuild-FileUtility/Editor/FolderOperation.cs.meta b/FileUtility/Editor/FolderOperation.cs.meta similarity index 100% rename from UnityBuild-FileUtility/Editor/FolderOperation.cs.meta rename to FileUtility/Editor/FolderOperation.cs.meta diff --git a/UnityBuild-FileUtility/README.md b/FileUtility/README.md similarity index 100% rename from UnityBuild-FileUtility/README.md rename to FileUtility/README.md diff --git a/UnityBuild-FileUtility/README.md.meta b/FileUtility/README.md.meta similarity index 100% rename from UnityBuild-FileUtility/README.md.meta rename to FileUtility/README.md.meta diff --git a/UnityBuild-ItchUploader.meta b/ItchUploader.meta similarity index 100% rename from UnityBuild-ItchUploader.meta rename to ItchUploader.meta diff --git a/UnityBuild-ItchUploader/Editor.meta b/ItchUploader/Editor.meta similarity index 100% rename from UnityBuild-ItchUploader/Editor.meta rename to ItchUploader/Editor.meta diff --git a/ItchUploader/Editor/UploadItch.cs b/ItchUploader/Editor/UploadItch.cs new file mode 100644 index 0000000..d1c7755 --- /dev/null +++ b/ItchUploader/Editor/UploadItch.cs @@ -0,0 +1,188 @@ +using System.Diagnostics; +using System.IO; +using System.Text; +using SuperUnityBuild.BuildTool; +using UnityEditor; +using UnityEngine; + +namespace SuperUnityBuild.BuildActions +{ + + public class UploadItch : BuildAction, IPostBuildPerPlatformAction + { + private const string WINDOWS = "windows"; + private const string OSX = "osx"; + private const string LINUX = "linux"; + private const string ANDROID = "android"; + + [SuperUnityBuild.BuildTool.FilePath(false, true, "Path to butler.exe")] + public string pathToButlerExe = ""; + public string nameOfItchUser = ""; + public string nameOfItchGame = ""; + public bool useGeneratedBuildVersion = false; + + [Header("Disable to capture error output for debugging.")] + public bool showUploadProgress = true; + + [Header("Use with caution. Override applies to all platforms.")] + public string itchChannelOverride = ""; + + #region Public Methods + + public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) + { + // Verify that butler executable exists. + if (!File.Exists(pathToButlerExe)) + { + UnityEngine.Debug.LogError("Couldn't find butler.exe file at path \"" + pathToButlerExe + "\", please check provided path"); + return; + } + + buildPath = Path.GetFullPath(buildPath); + + // Generate build args for the form: butler push {optional args} {build path} {itch username}/{itch game}:{channel} + StringBuilder scriptArguments = new StringBuilder("push "); + + switch (architecture.target) + { +#if UNITY_2017_3_OR_NEWER + case BuildTarget.StandaloneOSX: +#else + case BuildTarget.StandaloneOSXIntel: + case BuildTarget.StandaloneOSXIntel64: + case BuildTarget.StandaloneOSXUniversal: +#endif + case BuildTarget.StandaloneLinux: + case BuildTarget.StandaloneLinux64: + case BuildTarget.StandaloneLinuxUniversal: + // Fix exe permissions for Linux/OSX. + scriptArguments.Append("--fix-permissions "); + break; + } + + if (useGeneratedBuildVersion) + { + // Append generated versions string. + scriptArguments.Append(string.Format("--userversion \"{0}\" ", BuildSettings.productParameters.lastGeneratedVersion)); + } + + scriptArguments.Append("\"" + buildPath + "\"" + " " + nameOfItchUser + "/" + nameOfItchGame + ":"); + + if (!string.IsNullOrEmpty(itchChannelOverride)) + { + scriptArguments.Append(itchChannelOverride); + } + else + { + string itchChannel = GetChannelName(architecture.target); + if (string.IsNullOrEmpty(itchChannel)) + { + UnityEngine.Debug.LogWarning("UploadItch: The current BuildTarget doesn't appear to be a standard Itch.IO build target."); + } + + scriptArguments.Append(itchChannel); + } + + // UnityEngine.Debug.Log("Would have run itch uploader with following command line: \"" + pathToButlerExe + " " + scriptArguments + "\""); + RunScript(pathToButlerExe, scriptArguments.ToString()); + } + + #endregion + + #region Private Methods + + private void RunScript(string scriptPath, string arguments) + { + // Create and start butler process. + ProcessStartInfo startInfo = new ProcessStartInfo(); + startInfo.FileName = Path.GetFullPath(scriptPath); + startInfo.UseShellExecute = showUploadProgress; + startInfo.CreateNoWindow = !showUploadProgress; + startInfo.RedirectStandardOutput = !showUploadProgress; + startInfo.RedirectStandardError = !showUploadProgress; + + if (!string.IsNullOrEmpty(arguments)) + startInfo.Arguments = arguments; + + Process proc = Process.Start(startInfo); + + StringBuilder outputText = new StringBuilder(); + if (!showUploadProgress) + { + // Capture stdout. + proc.OutputDataReceived += (sendingProcess, outputLine) => + { + outputText.AppendLine(outputLine.Data); + }; + + proc.BeginOutputReadLine(); + } + + // Wait for butler to finish. + proc.WaitForExit(); + + // Display error if one occurred. + if (proc.ExitCode != 0) + { + string errString; + if (showUploadProgress) + { + errString = "Run w/ ShowUploadProgress disabled to capture debug output to console."; + } + else + { + errString = "Check console window for debug output."; + } + + BuildNotificationList.instance.AddNotification(new BuildNotification( + BuildNotification.Category.Error, + "Itch Upload Failed.", string.Format("Exit code: {0}\n{1}", proc.ExitCode, errString), + true, null)); + + UnityEngine.Debug.Log("ITCH.IO BUTLER OUTPUT: " + outputText.ToString()); + } + } + + private static string GetChannelName(BuildTarget target) + { + switch (target) + { + // Windows + case BuildTarget.StandaloneWindows: + return WINDOWS + "-x86"; + case BuildTarget.StandaloneWindows64: + return WINDOWS + "-x64"; + + // Linux + case BuildTarget.StandaloneLinux: + return LINUX + "-x86"; + case BuildTarget.StandaloneLinux64: + return LINUX + "-x64"; + case BuildTarget.StandaloneLinuxUniversal: + return LINUX + "-universal"; + + // OSX +#if UNITY_2017_3_OR_NEWER + case BuildTarget.StandaloneOSX: + return OSX; +#else + case BuildTarget.StandaloneOSXIntel: + return OSX + "-intel"; + case BuildTarget.StandaloneOSXIntel64: + return OSX + "-intel64"; + case BuildTarget.StandaloneOSXUniversal: + return OSX + "-universal"; +#endif + // Android + case BuildTarget.Android: + return ANDROID; + + default: + return null; + } + } + + #endregion + } + +} \ No newline at end of file diff --git a/UnityBuild-ItchUploader/Editor/UploadItch.cs.meta b/ItchUploader/Editor/UploadItch.cs.meta similarity index 100% rename from UnityBuild-ItchUploader/Editor/UploadItch.cs.meta rename to ItchUploader/Editor/UploadItch.cs.meta diff --git a/UnityBuild-ItchUploader/README.md b/ItchUploader/README.md similarity index 100% rename from UnityBuild-ItchUploader/README.md rename to ItchUploader/README.md diff --git a/UnityBuild-ItchUploader/README.md.meta b/ItchUploader/README.md.meta similarity index 100% rename from UnityBuild-ItchUploader/README.md.meta rename to ItchUploader/README.md.meta diff --git a/UnityBuild-OverrideDefines.meta b/OverrideDefines.meta similarity index 100% rename from UnityBuild-OverrideDefines.meta rename to OverrideDefines.meta diff --git a/UnityBuild-OverrideDefines/Editor.meta b/OverrideDefines/Editor.meta similarity index 79% rename from UnityBuild-OverrideDefines/Editor.meta rename to OverrideDefines/Editor.meta index 865b709..49a9646 100644 --- a/UnityBuild-OverrideDefines/Editor.meta +++ b/OverrideDefines/Editor.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 594ad643f17f3db4cb2a8c8d26184fb9 +guid: c9a187e0522587643af03b2eba8d96b6 folderAsset: yes timeCreated: 1491855404 licenseType: Pro diff --git a/OverrideDefines/Editor/OverrideDefines.cs b/OverrideDefines/Editor/OverrideDefines.cs new file mode 100644 index 0000000..afce92c --- /dev/null +++ b/OverrideDefines/Editor/OverrideDefines.cs @@ -0,0 +1,41 @@ +using System.Text; +using SuperUnityBuild.BuildTool; +using UnityEditor; + +namespace SuperUnityBuild.BuildActions +{ + public class OverrideDefines : BuildAction, IPreBuildPerPlatformAction + { + public string removeDefines; + public string addDefines; + + public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) + { + StringBuilder defines = new StringBuilder(BuildProject.GenerateDefaultDefines(releaseType, platform, architecture, distribution)); + + if (!string.IsNullOrEmpty(removeDefines)) + { + string resolvedRemove = BuildProject.ResolvePath(removeDefines, releaseType, platform, architecture, distribution, buildTime); + string[] splitRemove = resolvedRemove.Split(';'); + + for (int i = 0; i < splitRemove.Length; i++) + { + defines.Replace(splitRemove[i] + ";", ""); + defines.Replace(splitRemove[i], ""); + } + } + + if (!string.IsNullOrEmpty(addDefines)) + { + string resolvedAdd = BuildProject.ResolvePath(addDefines, releaseType, platform, architecture, distribution, buildTime); + + if (defines.Length > 0) + defines.Append(";" + resolvedAdd); + else + defines.Append(resolvedAdd); + } + + PlayerSettings.SetScriptingDefineSymbolsForGroup(platform.targetGroup, defines.ToString()); + } + } +} diff --git a/UnityBuild-OverrideDefines/Editor/OverrideDefines.cs.meta b/OverrideDefines/Editor/OverrideDefines.cs.meta similarity index 100% rename from UnityBuild-OverrideDefines/Editor/OverrideDefines.cs.meta rename to OverrideDefines/Editor/OverrideDefines.cs.meta diff --git a/UnityBuild-OverrideDefines/README.md b/OverrideDefines/README.md similarity index 100% rename from UnityBuild-OverrideDefines/README.md rename to OverrideDefines/README.md diff --git a/UnityBuild-OverrideDefines/README.md.meta b/OverrideDefines/README.md.meta similarity index 77% rename from UnityBuild-OverrideDefines/README.md.meta rename to OverrideDefines/README.md.meta index 2e959b3..9e8ca37 100644 --- a/UnityBuild-OverrideDefines/README.md.meta +++ b/OverrideDefines/README.md.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: e406c2ed22747424ca6f2682096c9598 +guid: b851c3c4eb32fb0409d0acf4df45d0b0 timeCreated: 1511119362 licenseType: Pro DefaultImporter: diff --git a/UnityBuild-PackageManagement.meta b/PackageManagement.meta similarity index 100% rename from UnityBuild-PackageManagement.meta rename to PackageManagement.meta diff --git a/UnityBuild-PackageManagement/Editor.meta b/PackageManagement/Editor.meta similarity index 100% rename from UnityBuild-PackageManagement/Editor.meta rename to PackageManagement/Editor.meta diff --git a/UnityBuild-PackageManagement/Editor/PackageManagement.cs b/PackageManagement/Editor/PackageManagement.cs similarity index 95% rename from UnityBuild-PackageManagement/Editor/PackageManagement.cs rename to PackageManagement/Editor/PackageManagement.cs index 1eef042..6e5954f 100644 --- a/UnityBuild-PackageManagement/Editor/PackageManagement.cs +++ b/PackageManagement/Editor/PackageManagement.cs @@ -1,11 +1,11 @@ using System; using System.Collections.Generic; +using SuperUnityBuild.BuildTool; using UnityEditor; using UnityEditor.PackageManager; using UnityEditor.PackageManager.Requests; using UnityEngine; - -namespace SuperSystems.UnityBuild +namespace SuperUnityBuild.BuildActions { public class PackageManagement : BuildAction, IPreBuildAction, IPreBuildPerPlatformAction, IPostBuildAction, IPostBuildPerPlatformAction { diff --git a/UnityBuild-PackageManagement/Editor/PackageManagement.cs.meta b/PackageManagement/Editor/PackageManagement.cs.meta similarity index 100% rename from UnityBuild-PackageManagement/Editor/PackageManagement.cs.meta rename to PackageManagement/Editor/PackageManagement.cs.meta diff --git a/UnityBuild-PackageManagement/README.md b/PackageManagement/README.md similarity index 100% rename from UnityBuild-PackageManagement/README.md rename to PackageManagement/README.md diff --git a/UnityBuild-PackageManagement/README.md.meta b/PackageManagement/README.md.meta similarity index 100% rename from UnityBuild-PackageManagement/README.md.meta rename to PackageManagement/README.md.meta diff --git a/UnityBuild-PerBuildPlayerSettings.meta b/PerBuildPlayerSettings.meta similarity index 100% rename from UnityBuild-PerBuildPlayerSettings.meta rename to PerBuildPlayerSettings.meta diff --git a/UnityBuild-PerBuildPlayerSettings/Editor.meta b/PerBuildPlayerSettings/Editor.meta similarity index 100% rename from UnityBuild-PerBuildPlayerSettings/Editor.meta rename to PerBuildPlayerSettings/Editor.meta diff --git a/UnityBuild-PerBuildPlayerSettings/Editor/PerBuildPlayerSettings.cs b/PerBuildPlayerSettings/Editor/PerBuildPlayerSettings.cs similarity index 94% rename from UnityBuild-PerBuildPlayerSettings/Editor/PerBuildPlayerSettings.cs rename to PerBuildPlayerSettings/Editor/PerBuildPlayerSettings.cs index 02a9699..7923c43 100644 --- a/UnityBuild-PerBuildPlayerSettings/Editor/PerBuildPlayerSettings.cs +++ b/PerBuildPlayerSettings/Editor/PerBuildPlayerSettings.cs @@ -1,11 +1,12 @@ using System; using System.Collections.Generic; using System.Linq; +using SuperUnityBuild.BuildTool; using UnityEditor; using UnityEngine; using Object = UnityEngine.Object; -namespace SuperSystems.UnityBuild +namespace SuperUnityBuild.BuildActions { public class PerBuildPlayerSettings : BuildAction, IPreBuildPerPlatformAction, IPostBuildPerPlatformAction { diff --git a/UnityBuild-PerBuildPlayerSettings/Editor/PerBuildPlayerSettings.cs.meta b/PerBuildPlayerSettings/Editor/PerBuildPlayerSettings.cs.meta similarity index 100% rename from UnityBuild-PerBuildPlayerSettings/Editor/PerBuildPlayerSettings.cs.meta rename to PerBuildPlayerSettings/Editor/PerBuildPlayerSettings.cs.meta diff --git a/UnityBuild-PerBuildPlayerSettings/README.md b/PerBuildPlayerSettings/README.md similarity index 100% rename from UnityBuild-PerBuildPlayerSettings/README.md rename to PerBuildPlayerSettings/README.md diff --git a/UnityBuild-PerBuildPlayerSettings/README.md.meta b/PerBuildPlayerSettings/README.md.meta similarity index 100% rename from UnityBuild-PerBuildPlayerSettings/README.md.meta rename to PerBuildPlayerSettings/README.md.meta diff --git a/README.md b/README.md index f5539ac..e81795d 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ # SuperUnityBuild - BuildActions -> BuildActions for use with the [SuperUnityBuild][unitybuild] build automation tool. +> BuildActions for use with the [SuperUnityBuild][buildtool] build automation tool. -BuildActions are one of the key components that make the [SuperUnityBuild][unitybuild] build automation tool flexible and powerful. Each one extends the capabilities of SuperUnityBuild and can be easily setup and customized to suit your needs, and if there's some other specialized functionality that your project needs, you can simply write your own BuildActions and integrate them into the build process. +BuildActions are one of the key components that make the [SuperUnityBuild][buildtool] build automation tool flexible and powerful. Each one extends the capabilities of SuperUnityBuild and can be easily setup and customized to suit your needs, and if there's some other specialized functionality that your project needs, you can simply write your own BuildActions and integrate them into the build process. This repository is intended to serve as an ever expanding library of useful BuildActions as more of them are created. ## Basic Usage -If you don't already have SuperUnityBuild, get it from its [GitHub repository][unitybuild]. Then, do one of the following: +If you don't already have SuperUnityBuild, get it from its [GitHub repository][buildtool]. Then, do one of the following: * [Download][download] this project and copy the folder for the tools you want into your project's Assets directory. * Make this repository a git submodule within your project's Assets directory. @@ -30,7 +30,7 @@ Bug reports, feature requests, and pull requests are welcome and appreciated. * **Chase Pettit** - [github](https://github.com/Chaser324), [twitter](http://twitter.com/chasepettit) ## License -All code in this repository ([unity-build-actions](https://github.com/Chaser324/unity-build-actions)) is made freely available under the MIT license. This essentially means you're free to use it however you like as long as you provide attribution. +All code in this repository ([unity-build-actions](https://github.com/superunitybuild/buildactions)) is made freely available under the MIT license. This essentially means you're free to use it however you like as long as you provide attribution. Zip File Utility includes a pre-compiled DotNetZip library which is licensed under the Ms-PL. See [DotNetZip's repository](https://dotnetzip.codeplex.com/) for more info. @@ -38,13 +38,13 @@ Zip File Utility includes a pre-compiled DotNetZip library which is licensed und -[download]: https://github.com/Chaser324/unity-build-actions/archive/master.zip -[unitybuild]: https://github.com/Chaser324/unity-build +[download]: https://github.com/superunitybuild/buildactions/archive/master.zip +[buildtool]: https://github.com/Chaser324/unity-build [unitybuild-wiki]: https://github.com/Chaser324/unity-build/wiki/Build-Actions -[assetbundle]: https://github.com/Chaser324/unity-build-actions/tree/master/UnityBuild-AssetBundle -[fileutil]: https://github.com/Chaser324/unity-build-actions/tree/master/UnityBuild-FileUtility -[scriptrunner]: https://github.com/Chaser324/unity-build-actions/tree/master/UnityBuild-ScriptRunner -[zipfile]: https://github.com/Chaser324/unity-build-actions/tree/master/UnityBuild-ZipFile -[itchuploader]: https://github.com/Chaser324/unity-build-actions/tree/master/UnityBuild-ItchUploader -[overridedefines]: https://github.com/Chaser324/unity-build-actions/tree/master/UnityBuild-OverrideDefines +[assetbundle]: https://github.com/superunitybuild/buildactions/tree/master/UnityBuild-AssetBundle +[fileutil]: https://github.com/superunitybuild/buildactions/tree/master/UnityBuild-FileUtility +[scriptrunner]: https://github.com/superunitybuild/buildactions/tree/master/UnityBuild-ScriptRunner +[zipfile]: https://github.com/superunitybuild/buildactions/tree/master/UnityBuild-ZipFile +[itchuploader]: https://github.com/superunitybuild/buildactions/tree/master/UnityBuild-ItchUploader +[overridedefines]: https://github.com/superunitybuild/buildactions/tree/master/UnityBuild-OverrideDefines diff --git a/UnityBuild-ScriptRunner.meta b/ScriptRunner.meta similarity index 100% rename from UnityBuild-ScriptRunner.meta rename to ScriptRunner.meta diff --git a/UnityBuild-ScriptRunner/Editor.meta b/ScriptRunner/Editor.meta similarity index 100% rename from UnityBuild-ScriptRunner/Editor.meta rename to ScriptRunner/Editor.meta diff --git a/ScriptRunner/Editor/ScriptRunner.cs b/ScriptRunner/Editor/ScriptRunner.cs new file mode 100644 index 0000000..4b10399 --- /dev/null +++ b/ScriptRunner/Editor/ScriptRunner.cs @@ -0,0 +1,39 @@ +using System.Diagnostics; +using System.IO; +using SuperUnityBuild.BuildTool; +using UnityEditor; + +namespace SuperUnityBuild.BuildActions +{ + public class ScriptRunner : BuildAction, IPreBuildAction, IPreBuildPerPlatformAction, IPostBuildAction, IPostBuildPerPlatformAction + { + [SuperUnityBuild.BuildTool.FilePath(false, true, "Select program/script to run.")] + public string scriptPath = ""; + public string scriptArguments = ""; + + public override void Execute() + { + RunScript(scriptPath, scriptArguments); + } + + public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) + { + string resolvedScriptPath = BuildProject.ResolvePath(scriptPath, releaseType, platform, architecture, distribution, buildTime); + string resolvedScriptArgs = BuildProject.ResolvePath(scriptArguments, releaseType, platform, architecture, distribution, buildTime); + + RunScript(resolvedScriptPath, resolvedScriptArgs); + } + + private void RunScript(string scriptPath, string arguments) + { + ProcessStartInfo startInfo = new ProcessStartInfo(); + startInfo.FileName = Path.GetFullPath(scriptPath); + + if (!string.IsNullOrEmpty(arguments)) + startInfo.Arguments = arguments; + + Process proc = Process.Start(startInfo); + proc.WaitForExit(); + } + } +} diff --git a/UnityBuild-ScriptRunner/Editor/ScriptRunner.cs.meta b/ScriptRunner/Editor/ScriptRunner.cs.meta similarity index 100% rename from UnityBuild-ScriptRunner/Editor/ScriptRunner.cs.meta rename to ScriptRunner/Editor/ScriptRunner.cs.meta diff --git a/UnityBuild-ScriptRunner/README.md b/ScriptRunner/README.md similarity index 100% rename from UnityBuild-ScriptRunner/README.md rename to ScriptRunner/README.md diff --git a/UnityBuild-ScriptRunner/README.md.meta b/ScriptRunner/README.md.meta similarity index 100% rename from UnityBuild-ScriptRunner/README.md.meta rename to ScriptRunner/README.md.meta diff --git a/UnityBuild-AssetBundle/Editor/BuildAssetBundles.cs b/UnityBuild-AssetBundle/Editor/BuildAssetBundles.cs deleted file mode 100644 index 22f1e8f..0000000 --- a/UnityBuild-AssetBundle/Editor/BuildAssetBundles.cs +++ /dev/null @@ -1,96 +0,0 @@ -using System.IO; -using System.Text; -using UnityEditor; -using UnityEngine; - -namespace SuperSystems.UnityBuild -{ - -public sealed class BuildAssetBundles : BuildAction, IPreBuildPerPlatformAction -{ - #region Public Variables - - [FilePath(true, true, "Select AssetBundle output directory.")] - public string baseBuildPath = Path.Combine("bin", "bundles"); - - public string innerBuildPath = Path.Combine("$PLATFORM", "$ARCHITECTURE"); - -#if UNITY_5_3 || UNITY_5_4_OR_NEWER - public BuildAssetBundleOptions options = BuildAssetBundleOptions.ChunkBasedCompression; -#else - public BuildAssetBundleOptions options = BuildAssetBundleOptions.None; -#endif - - #endregion - - #region Public Methods - - public override void PerBuildExecute( - BuildReleaseType releaseType, - BuildPlatform platform, - BuildArchitecture architecture, - BuildDistribution distribution, - System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) - { - Build(platform, architecture); - } - - public void BuildAll() - { - string[] buildConfigs = BuildSettings.projectConfigurations.BuildAllKeychains(); - - for (int i = 0; i < buildConfigs.Length; i++) - { - BuildReleaseType releaseType; - BuildPlatform platform; - BuildArchitecture arch; - BuildDistribution dist; - string configKey = buildConfigs[i]; - - BuildSettings.projectConfigurations.ParseKeychain(configKey, out releaseType, out platform, out arch, out dist); - Build(platform, arch); - } - } - - protected override void DrawProperties(SerializedObject obj) - { - EditorGUILayout.PropertyField(obj.FindProperty("baseBuildPath")); - EditorGUILayout.PropertyField(obj.FindProperty("innerBuildPath")); -#if UNITY_2017_3_OR_NEWER - options = (BuildAssetBundleOptions)EditorGUILayout.EnumFlagsField("Options", options); -#else - options = (BuildAssetBundleOptions)((int)(BuildAssetBundleOptions)EditorGUILayout.EnumMaskField("Options", (BuildAssetBundleOptions)((int)(options) << 1)) >> 1); -#endif - - if (GUILayout.Button("Run Now", GUILayout.ExpandWidth(true))) - { - BuildAll(); - } - } - - #endregion - - #region Private Methods - - private void Build(BuildPlatform platform, BuildArchitecture arch) - { - if (!platform.enabled || !arch.enabled) - return; - - // Resolve build path. - StringBuilder platformBundlePath = new StringBuilder(Path.Combine(baseBuildPath, innerBuildPath)); - platformBundlePath.Replace("$PLATFORM", BuildProject.SanitizeFolderName(platform.platformName)); - platformBundlePath.Replace("$ARCHITECTURE", BuildProject.SanitizeFolderName(arch.name)); - - // Create build destination directory if it does not exist. - if (!Directory.Exists(platformBundlePath.ToString())) - Directory.CreateDirectory(platformBundlePath.ToString()); - - // Build AssetBundles. - BuildPipeline.BuildAssetBundles(platformBundlePath.ToString(), options, arch.target); - } - - #endregion -} - -} \ No newline at end of file diff --git a/UnityBuild-FileUtility/Editor/FileOperation.cs b/UnityBuild-FileUtility/Editor/FileOperation.cs deleted file mode 100644 index bab3a6a..0000000 --- a/UnityBuild-FileUtility/Editor/FileOperation.cs +++ /dev/null @@ -1,188 +0,0 @@ -using UnityEngine; -using UnityEditor; -using System.Collections; -using System.IO; - -namespace SuperSystems.UnityBuild -{ - -public class FileOperation : BuildAction, IPreBuildAction, IPreBuildPerPlatformAction, IPostBuildAction, IPostBuildPerPlatformAction -{ - public enum Operation - { - Move, - Copy, - Delete, - } - - [FilePath(false)] - public string inputPath; - [FilePath(false)] - public string outputPath; - public bool recursiveSearch = true; - public Operation operation; - - public override void Execute() - { - switch (operation) - { - case Operation.Copy: - Copy(inputPath, outputPath); - break; - case Operation.Move: - Move(inputPath, outputPath); - break; - case Operation.Delete: - Delete(inputPath); - break; - } - - AssetDatabase.Refresh(); - } - - public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) - { - string resolvedInputPath = BuildProject.ResolvePath(inputPath.Replace("$BUILDPATH", buildPath), releaseType, platform, architecture, distribution, buildTime); - string resolvedOutputPath = BuildProject.ResolvePath(outputPath.Replace("$BUILDPATH", buildPath), releaseType, platform, architecture, distribution, buildTime); - - switch (operation) - { - case Operation.Copy: - Copy(resolvedInputPath, resolvedOutputPath); - break; - case Operation.Move: - Move(resolvedInputPath, resolvedOutputPath); - break; - case Operation.Delete: - Delete(resolvedInputPath); - break; - } - - AssetDatabase.Refresh(); - } - - protected override void DrawProperties(SerializedObject obj) - { - bool containsWildcard = string.IsNullOrEmpty(inputPath) ? false : Path.GetFileNameWithoutExtension(inputPath).Contains("*"); - - EditorGUILayout.PropertyField(obj.FindProperty("operation")); - - if (containsWildcard) - EditorGUILayout.PropertyField(obj.FindProperty("recursiveSearch")); - - EditorGUILayout.PropertyField(obj.FindProperty("inputPath")); - - if (operation != Operation.Delete) - EditorGUILayout.PropertyField(obj.FindProperty("outputPath")); - } - - private void Move(string inputPath, string outputPath, bool overwrite = true) - { - bool containsWildcard = string.IsNullOrEmpty(inputPath) ? false : Path.GetFileNameWithoutExtension(inputPath).Contains("*"); - - if (!containsWildcard && !File.Exists(inputPath)) - { - // Error. Input does not exist. - return; - } - - if (!containsWildcard && overwrite && File.Exists(outputPath)) - { - // Delete previous output. - FileUtil.DeleteFileOrDirectory(outputPath); - } - - if (containsWildcard) - { - string inputDirectory = Path.GetDirectoryName(inputPath); - string outputDirectory = Path.GetDirectoryName(outputPath); - - SearchOption option = recursiveSearch ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly; - string[] fileList = Directory.GetFiles(inputDirectory, Path.GetFileName(inputPath), option); - - for (int i = 0; i < fileList.Length; i++) - { - string fileName = Path.GetFileName(fileList[i]); - string outputFile = Path.Combine(outputDirectory, fileName); - - if (File.Exists(outputFile)) - FileUtil.DeleteFileOrDirectory(outputFile); - - FileUtil.MoveFileOrDirectory(fileList[i], outputFile); - } - } - else - { - FileUtil.MoveFileOrDirectory(inputPath, outputPath); - } - } - - private void Copy(string inputPath, string outputPath, bool overwrite = true) - { - bool containsWildcard = string.IsNullOrEmpty(inputPath) ? false : Path.GetFileNameWithoutExtension(inputPath).Contains("*"); - - if (!containsWildcard && !File.Exists(inputPath)) - { - // Error. Input does not exist. - return; - } - - if (!containsWildcard && overwrite && File.Exists(outputPath)) - { - // Delete previous output. - FileUtil.DeleteFileOrDirectory(outputPath); - } - - if (containsWildcard) - { - string inputDirectory = Path.GetDirectoryName(inputPath); - string outputDirectory = Path.GetDirectoryName(outputPath); - - SearchOption option = recursiveSearch ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly; - string[] fileList = Directory.GetFiles(inputDirectory, Path.GetFileName(inputPath), option); - - for (int i = 0; i < fileList.Length; i++) - { - string fileName = Path.GetFileName(fileList[i]); - string outputFile = Path.Combine(outputDirectory, fileName); - - if (File.Exists(outputFile)) - FileUtil.DeleteFileOrDirectory(outputFile); - - FileUtil.CopyFileOrDirectory(fileList[i], outputFile); - } - } - else - { - FileUtil.CopyFileOrDirectory(inputPath, outputPath); - } - } - - private void Delete(string inputPath) - { - bool containsWildcard = string.IsNullOrEmpty(inputPath) ? false : Path.GetFileNameWithoutExtension(inputPath).Contains("*"); - - if (!containsWildcard && File.Exists(inputPath)) - { - FileUtil.DeleteFileOrDirectory(inputPath); - } - else if (containsWildcard) - { - string inputDirectory = Path.GetDirectoryName(inputPath); - - SearchOption option = recursiveSearch ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly; - string[] fileList = Directory.GetFiles(inputDirectory, Path.GetFileName(inputPath), option); - - for (int i = 0; i < fileList.Length; i++) - { - FileUtil.DeleteFileOrDirectory(fileList[i]); - } - } - else - { - // Error. File does not exist. - } - } -} - -} \ No newline at end of file diff --git a/UnityBuild-FileUtility/Editor/FolderOperation.cs b/UnityBuild-FileUtility/Editor/FolderOperation.cs deleted file mode 100644 index 79ae2f5..0000000 --- a/UnityBuild-FileUtility/Editor/FolderOperation.cs +++ /dev/null @@ -1,177 +0,0 @@ -using UnityEngine; -using UnityEditor; -using System.Collections; -using System.IO; -using System.Diagnostics; - -namespace SuperSystems.UnityBuild -{ - -public class FolderOperation : BuildAction, IPreBuildAction, IPreBuildPerPlatformAction, IPostBuildAction, IPostBuildPerPlatformAction -{ - public enum Operation - { - Move, - Copy, - Delete, - } - - [FilePath(true)] - public string inputPath; - [FilePath(true)] - public string outputPath; - public Operation operation; - - public override void Execute() - { - switch (operation) - { - case Operation.Copy: - Copy(inputPath, outputPath); - break; - case Operation.Move: - Move(inputPath, outputPath); - break; - case Operation.Delete: - Delete(inputPath); - break; - } - - AssetDatabase.Refresh(); - } - - public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) - { - string resolvedInputPath = BuildProject.ResolvePath(inputPath.Replace("$BUILDPATH", buildPath), releaseType, platform, architecture, distribution, buildTime); - string resolvedOutputPath = BuildProject.ResolvePath(outputPath.Replace("$BUILDPATH", buildPath), releaseType, platform, architecture, distribution, buildTime); - - switch (operation) - { - case Operation.Copy: - Copy(resolvedInputPath, resolvedOutputPath); - break; - case Operation.Move: - Move(resolvedInputPath, resolvedOutputPath); - break; - case Operation.Delete: - Delete(resolvedInputPath); - break; - } - - AssetDatabase.Refresh(); - } - - protected override void DrawProperties(SerializedObject obj) - { - EditorGUILayout.PropertyField(obj.FindProperty("operation")); - EditorGUILayout.PropertyField(obj.FindProperty("inputPath")); - - if (operation != Operation.Delete) - EditorGUILayout.PropertyField(obj.FindProperty("outputPath")); - } - - private void Move(string inputPath, string outputPath, bool overwrite = true) - { - bool success = true; - string errorString = ""; - - if (!Directory.Exists(inputPath)) - { - // Error. Input does not exist. - success = false; - errorString = "Input does not exist."; - } - - // Make sure that all parent directories in path are already created. - string parentPath = Path.GetDirectoryName(outputPath); - if (!Directory.Exists(parentPath)) - { - Directory.CreateDirectory(parentPath); - } - - if (overwrite && Directory.Exists(outputPath)) - { - // Delete previous output. - success = FileUtil.DeleteFileOrDirectory(outputPath); - - if (!success) - errorString = "Could not overwrite existing folder."; - } - - FileUtil.MoveFileOrDirectory(inputPath, outputPath); - - if (!success && !string.IsNullOrEmpty(errorString)) - { - BuildNotificationList.instance.AddNotification(new BuildNotification( - BuildNotification.Category.Error, - "Folder Move Failed.", errorString, - true, null)); - } - } - - private void Copy(string inputPath, string outputPath, bool overwrite = true) - { - bool success = true; - string errorString = ""; - - if (!Directory.Exists(inputPath)) - { - // Error. Input does not exist. - success = false; - errorString = "Input does not exist."; - } - - // Make sure that all parent directories in path are already created. - string parentPath = Path.GetDirectoryName(outputPath); - if (!Directory.Exists(parentPath)) - { - Directory.CreateDirectory(parentPath); - } - - if (success && overwrite && Directory.Exists(outputPath)) - { - // Delete previous output. - success = FileUtil.DeleteFileOrDirectory(outputPath); - - if (!success) - errorString = "Could not overwrite existing folder."; - } - - FileUtil.CopyFileOrDirectory(inputPath, outputPath); - - if (!success && !string.IsNullOrEmpty(errorString)) - { - BuildNotificationList.instance.AddNotification(new BuildNotification( - BuildNotification.Category.Error, - "Folder Copy Failed.", errorString, - true, null)); - } - } - - private void Delete(string inputPath) - { - bool success = true; - string errorString = ""; - - if (Directory.Exists(inputPath)) - { - FileUtil.DeleteFileOrDirectory(inputPath); - } - else - { - // Error. File does not exist. - success = false; - errorString = "Input does not exist."; - } - - if (!success && !string.IsNullOrEmpty(errorString)) - { - BuildNotificationList.instance.AddNotification(new BuildNotification( - BuildNotification.Category.Error, - "Folder Delete Failed.", errorString, - true, null)); - } - } -} - -} \ No newline at end of file diff --git a/UnityBuild-ItchUploader/Editor/UploadItch.cs b/UnityBuild-ItchUploader/Editor/UploadItch.cs deleted file mode 100644 index 38842f1..0000000 --- a/UnityBuild-ItchUploader/Editor/UploadItch.cs +++ /dev/null @@ -1,187 +0,0 @@ -using System.Diagnostics; -using System.IO; -using System.Text; -using UnityEditor; -using UnityEngine; - -namespace SuperSystems.UnityBuild -{ - -public class UploadItch : BuildAction, IPostBuildPerPlatformAction -{ - private const string WINDOWS = "windows"; - private const string OSX = "osx"; - private const string LINUX = "linux"; - private const string ANDROID = "android"; - - [FilePath(false, true, "Path to butler.exe")] - public string pathToButlerExe = ""; - public string nameOfItchUser = ""; - public string nameOfItchGame = ""; - public bool useGeneratedBuildVersion = false; - - [Header("Disable to capture error output for debugging.")] - public bool showUploadProgress = true; - - [Header("Use with caution. Override applies to all platforms.")] - public string itchChannelOverride = ""; - - #region Public Methods - - public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) - { - // Verify that butler executable exists. - if (!File.Exists(pathToButlerExe)) - { - UnityEngine.Debug.LogError("Couldn't find butler.exe file at path \"" + pathToButlerExe + "\", please check provided path"); - return; - } - - buildPath = Path.GetFullPath(buildPath); - - // Generate build args for the form: butler push {optional args} {build path} {itch username}/{itch game}:{channel} - StringBuilder scriptArguments = new StringBuilder("push "); - - switch (architecture.target) - { -#if UNITY_2017_3_OR_NEWER - case BuildTarget.StandaloneOSX: -#else - case BuildTarget.StandaloneOSXIntel: - case BuildTarget.StandaloneOSXIntel64: - case BuildTarget.StandaloneOSXUniversal: -#endif - case BuildTarget.StandaloneLinux: - case BuildTarget.StandaloneLinux64: - case BuildTarget.StandaloneLinuxUniversal: - // Fix exe permissions for Linux/OSX. - scriptArguments.Append("--fix-permissions "); - break; - } - - if (useGeneratedBuildVersion) - { - // Append generated versions string. - scriptArguments.Append(string.Format("--userversion \"{0}\" ", BuildSettings.productParameters.lastGeneratedVersion)); - } - - scriptArguments.Append("\"" + buildPath + "\"" + " " + nameOfItchUser + "/" + nameOfItchGame + ":"); - - if (!string.IsNullOrEmpty(itchChannelOverride)) - { - scriptArguments.Append(itchChannelOverride); - } - else - { - string itchChannel = GetChannelName(architecture.target); - if(string.IsNullOrEmpty(itchChannel)) - { - UnityEngine.Debug.LogWarning("UploadItch: The current BuildTarget doesn't appear to be a standard Itch.IO build target."); - } - - scriptArguments.Append(itchChannel); - } - - // UnityEngine.Debug.Log("Would have run itch uploader with following command line: \"" + pathToButlerExe + " " + scriptArguments + "\""); - RunScript(pathToButlerExe, scriptArguments.ToString()); - } - - #endregion - - #region Private Methods - - private void RunScript(string scriptPath, string arguments) - { - // Create and start butler process. - ProcessStartInfo startInfo = new ProcessStartInfo(); - startInfo.FileName = Path.GetFullPath(scriptPath); - startInfo.UseShellExecute = showUploadProgress; - startInfo.CreateNoWindow = !showUploadProgress; - startInfo.RedirectStandardOutput = !showUploadProgress; - startInfo.RedirectStandardError = !showUploadProgress; - - if (!string.IsNullOrEmpty(arguments)) - startInfo.Arguments = arguments; - - Process proc = Process.Start(startInfo); - - StringBuilder outputText = new StringBuilder(); - if (!showUploadProgress) - { - // Capture stdout. - proc.OutputDataReceived += (sendingProcess, outputLine) => - { - outputText.AppendLine(outputLine.Data); - }; - - proc.BeginOutputReadLine(); - } - - // Wait for butler to finish. - proc.WaitForExit(); - - // Display error if one occurred. - if (proc.ExitCode != 0) - { - string errString; - if (showUploadProgress) - { - errString = "Run w/ ShowUploadProgress disabled to capture debug output to console."; - } - else - { - errString = "Check console window for debug output."; - } - - BuildNotificationList.instance.AddNotification(new BuildNotification( - BuildNotification.Category.Error, - "Itch Upload Failed.", string.Format("Exit code: {0}\n{1}", proc.ExitCode, errString), - true, null)); - - UnityEngine.Debug.Log("ITCH.IO BUTLER OUTPUT: " + outputText.ToString()); - } - } - - private static string GetChannelName(BuildTarget target) - { - switch (target) - { - // Windows - case BuildTarget.StandaloneWindows: - return WINDOWS + "-x86"; - case BuildTarget.StandaloneWindows64: - return WINDOWS + "-x64"; - - // Linux - case BuildTarget.StandaloneLinux: - return LINUX + "-x86"; - case BuildTarget.StandaloneLinux64: - return LINUX + "-x64"; - case BuildTarget.StandaloneLinuxUniversal: - return LINUX + "-universal"; - - // OSX -#if UNITY_2017_3_OR_NEWER - case BuildTarget.StandaloneOSX: - return OSX; -#else - case BuildTarget.StandaloneOSXIntel: - return OSX + "-intel"; - case BuildTarget.StandaloneOSXIntel64: - return OSX + "-intel64"; - case BuildTarget.StandaloneOSXUniversal: - return OSX + "-universal"; -#endif - // Android - case BuildTarget.Android: - return ANDROID; - - default: - return null; - } - } - - #endregion -} - -} \ No newline at end of file diff --git a/UnityBuild-OverrideDefines/Editor/OverrideDefines.cs b/UnityBuild-OverrideDefines/Editor/OverrideDefines.cs deleted file mode 100644 index 8daf3ac..0000000 --- a/UnityBuild-OverrideDefines/Editor/OverrideDefines.cs +++ /dev/null @@ -1,45 +0,0 @@ -using UnityEngine; -using UnityEditor; -using System.Collections; -using System.IO; -using System.Text; - -namespace SuperSystems.UnityBuild -{ - -public class OverrideDefines : BuildAction, IPreBuildPerPlatformAction -{ - public string removeDefines; - public string addDefines; - - public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) - { - StringBuilder defines = new StringBuilder(BuildProject.GenerateDefaultDefines(releaseType, platform, architecture, distribution)); - - if (!string.IsNullOrEmpty(removeDefines)) - { - string resolvedRemove = BuildProject.ResolvePath(removeDefines, releaseType, platform, architecture, distribution, buildTime); - string[] splitRemove = resolvedRemove.Split(';'); - - for (int i = 0; i < splitRemove.Length; i++) - { - defines.Replace(splitRemove[i] + ";", ""); - defines.Replace(splitRemove[i], ""); - } - } - - if (!string.IsNullOrEmpty(addDefines)) - { - string resolvedAdd = BuildProject.ResolvePath(addDefines, releaseType, platform, architecture, distribution, buildTime); - - if (defines.Length > 0) - defines.Append(";" + resolvedAdd); - else - defines.Append(resolvedAdd); - } - - PlayerSettings.SetScriptingDefineSymbolsForGroup(platform.targetGroup, defines.ToString()); - } -} - -} diff --git a/UnityBuild-ScriptRunner/Editor/ScriptRunner.cs b/UnityBuild-ScriptRunner/Editor/ScriptRunner.cs deleted file mode 100644 index 84ad2f2..0000000 --- a/UnityBuild-ScriptRunner/Editor/ScriptRunner.cs +++ /dev/null @@ -1,41 +0,0 @@ -using UnityEngine; -using UnityEditor; -using System.Diagnostics; -using System.IO; - -namespace SuperSystems.UnityBuild -{ - -public class ScriptRunner : BuildAction, IPreBuildAction, IPreBuildPerPlatformAction, IPostBuildAction, IPostBuildPerPlatformAction -{ - [FilePath(false, true, "Select program/script to run.")] - public string scriptPath = ""; - public string scriptArguments = ""; - - public override void Execute() - { - RunScript(scriptPath, scriptArguments); - } - - public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) - { - string resolvedScriptPath = BuildProject.ResolvePath(scriptPath, releaseType, platform, architecture, distribution, buildTime); - string resolvedScriptArgs = BuildProject.ResolvePath(scriptArguments, releaseType, platform, architecture, distribution, buildTime); - - RunScript(resolvedScriptPath, resolvedScriptArgs); - } - - private void RunScript(string scriptPath, string arguments) - { - ProcessStartInfo startInfo = new ProcessStartInfo(); - startInfo.FileName = Path.GetFullPath(scriptPath); - - if (!string.IsNullOrEmpty(arguments)) - startInfo.Arguments = arguments; - - Process proc = Process.Start(startInfo); - proc.WaitForExit(); - } -} - -} diff --git a/UnityBuild-ZipFile/Editor/ZipFileOperation.cs b/UnityBuild-ZipFile/Editor/ZipFileOperation.cs deleted file mode 100644 index 7b5f0b4..0000000 --- a/UnityBuild-ZipFile/Editor/ZipFileOperation.cs +++ /dev/null @@ -1,68 +0,0 @@ -using Ionic.Zip; -using System; -using System.IO; -using UnityEditor; -using UnityEngine; - -namespace SuperSystems.UnityBuild -{ - -public class ZipFileOperation : BuildAction, IPreBuildAction, IPreBuildPerPlatformAction, IPostBuildAction, IPostBuildPerPlatformAction -{ - public string inputPath = "$BUILDPATH"; - public string outputPath = "$BUILDPATH"; - public string outputFileName = "$PRODUCT_NAME-$RELEASE_TYPE-$YEAR_$MONTH_$DAY.zip"; - - public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, System.DateTime buildTime, ref UnityEditor.BuildOptions options, string configKey, string buildPath) - { - string resolvedOutputPath = Path.Combine(outputPath.Replace("$BUILDPATH", buildPath), outputFileName); - resolvedOutputPath = BuildProject.ResolvePath(resolvedOutputPath, releaseType, platform, architecture, distribution, buildTime); - - string resolvedInputPath = inputPath.Replace("$BUILDPATH", buildPath); - resolvedInputPath = BuildProject.ResolvePath(resolvedInputPath, releaseType, platform, architecture, distribution, buildTime); - - if (!resolvedOutputPath.EndsWith(".zip")) - resolvedOutputPath += ".zip"; - - PerformZip(Path.GetFullPath(resolvedInputPath), Path.GetFullPath(resolvedOutputPath)); - } - - private void PerformZip(string inputPath, string outputPath) - { - try - { - if (!Directory.Exists(inputPath)) - { - BuildNotificationList.instance.AddNotification(new BuildNotification( - BuildNotification.Category.Error, - "Zip Operation Failed.", string.Format("Input path does not exist: {0}", inputPath), - true, null)); - return; - } - - // Make sure that all parent directories in path are already created. - string parentPath = Path.GetDirectoryName(outputPath); - if (!Directory.Exists(parentPath)) - { - Directory.CreateDirectory(parentPath); - } - - // Delete old file if it exists. - if (File.Exists(outputPath)) - File.Delete(outputPath); - - using (ZipFile zip = new ZipFile(outputPath)) - { - zip.ParallelDeflateThreshold = -1; // Parallel deflate is bugged in DotNetZip, so we need to disable it. - zip.AddDirectory(inputPath); - zip.Save(); - } - } - catch (Exception ex) - { - Debug.LogError(ex.ToString()); - } - } -} - -} \ No newline at end of file diff --git a/UnityBuild-XRPluginManagement.meta b/XRPluginManagement.meta similarity index 100% rename from UnityBuild-XRPluginManagement.meta rename to XRPluginManagement.meta diff --git a/UnityBuild-XRPluginManagement/Editor.meta b/XRPluginManagement/Editor.meta similarity index 100% rename from UnityBuild-XRPluginManagement/Editor.meta rename to XRPluginManagement/Editor.meta diff --git a/UnityBuild-XRPluginManagement/Editor/XRPluginManagement.cs b/XRPluginManagement/Editor/XRPluginManagement.cs similarity index 94% rename from UnityBuild-XRPluginManagement/Editor/XRPluginManagement.cs rename to XRPluginManagement/Editor/XRPluginManagement.cs index e389265..f2b08ad 100644 --- a/UnityBuild-XRPluginManagement/Editor/XRPluginManagement.cs +++ b/XRPluginManagement/Editor/XRPluginManagement.cs @@ -1,11 +1,12 @@ using System; using System.Collections.Generic; +using SuperUnityBuild.BuildTool; using UnityEditor; using UnityEditor.XR.Management; using UnityEngine; using UnityEngine.XR.Management; -namespace SuperSystems.UnityBuild +namespace SuperUnityBuild.BuildActions { public class XRPluginManagement : BuildAction, IPreBuildPerPlatformAction, IPostBuildPerPlatformAction { diff --git a/UnityBuild-XRPluginManagement/Editor/XRPluginManagement.cs.meta b/XRPluginManagement/Editor/XRPluginManagement.cs.meta similarity index 100% rename from UnityBuild-XRPluginManagement/Editor/XRPluginManagement.cs.meta rename to XRPluginManagement/Editor/XRPluginManagement.cs.meta diff --git a/UnityBuild-XRPluginManagement/README.md b/XRPluginManagement/README.md similarity index 100% rename from UnityBuild-XRPluginManagement/README.md rename to XRPluginManagement/README.md diff --git a/UnityBuild-XRPluginManagement/README.md.meta b/XRPluginManagement/README.md.meta similarity index 100% rename from UnityBuild-XRPluginManagement/README.md.meta rename to XRPluginManagement/README.md.meta diff --git a/UnityBuild-XRSettings.meta b/XRSettings.meta similarity index 100% rename from UnityBuild-XRSettings.meta rename to XRSettings.meta diff --git a/UnityBuild-XRSettings/Editor.meta b/XRSettings/Editor.meta similarity index 77% rename from UnityBuild-XRSettings/Editor.meta rename to XRSettings/Editor.meta index 1e7519a..e68a5b4 100644 --- a/UnityBuild-XRSettings/Editor.meta +++ b/XRSettings/Editor.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 594ad643f17f3db4cb2a8c8d26184fb9 +guid: 4d09cc5e8d0808c47b3e0ce971f6c55b folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/UnityBuild-XRSettings/Editor/XRSettings.cs b/XRSettings/Editor/XRSettings.cs similarity index 97% rename from UnityBuild-XRSettings/Editor/XRSettings.cs rename to XRSettings/Editor/XRSettings.cs index 472c6aa..5cf049a 100644 --- a/UnityBuild-XRSettings/Editor/XRSettings.cs +++ b/XRSettings/Editor/XRSettings.cs @@ -4,10 +4,11 @@ using System; using System.Collections.Generic; +using SuperUnityBuild.BuildTool; using UnityEditor; using UnityEngine; -namespace SuperSystems.UnityBuild +namespace SuperUnityBuild.BuildActions { public class XRSettings : BuildAction, IPreBuildPerPlatformAction, IPostBuildPerPlatformAction { @@ -85,4 +86,4 @@ public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform } } } -} +} \ No newline at end of file diff --git a/UnityBuild-XRSettings/Editor/XRSettings.cs.meta b/XRSettings/Editor/XRSettings.cs.meta similarity index 100% rename from UnityBuild-XRSettings/Editor/XRSettings.cs.meta rename to XRSettings/Editor/XRSettings.cs.meta diff --git a/UnityBuild-XRSettings/README.md b/XRSettings/README.md similarity index 100% rename from UnityBuild-XRSettings/README.md rename to XRSettings/README.md diff --git a/UnityBuild-XRSettings/README.md.meta b/XRSettings/README.md.meta similarity index 75% rename from UnityBuild-XRSettings/README.md.meta rename to XRSettings/README.md.meta index fd1fdd6..8ce1f83 100644 --- a/UnityBuild-XRSettings/README.md.meta +++ b/XRSettings/README.md.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: e406c2ed22747424ca6f2682096c9598 +guid: 7e93517b9a4bad54f9d06404d0d979b6 TextScriptImporter: externalObjects: {} userData: diff --git a/UnityBuild-ZipFile.meta b/ZipFile.meta similarity index 100% rename from UnityBuild-ZipFile.meta rename to ZipFile.meta diff --git a/UnityBuild-ZipFile/Editor.meta b/ZipFile/Editor.meta similarity index 100% rename from UnityBuild-ZipFile/Editor.meta rename to ZipFile/Editor.meta diff --git a/UnityBuild-ZipFile/Editor/Ionic.Zip.License.txt b/ZipFile/Editor/Ionic.Zip.License.txt similarity index 100% rename from UnityBuild-ZipFile/Editor/Ionic.Zip.License.txt rename to ZipFile/Editor/Ionic.Zip.License.txt diff --git a/UnityBuild-ZipFile/Editor/Ionic.Zip.License.txt.meta b/ZipFile/Editor/Ionic.Zip.License.txt.meta similarity index 100% rename from UnityBuild-ZipFile/Editor/Ionic.Zip.License.txt.meta rename to ZipFile/Editor/Ionic.Zip.License.txt.meta diff --git a/UnityBuild-ZipFile/Editor/Ionic.Zip.dll b/ZipFile/Editor/Ionic.Zip.dll similarity index 100% rename from UnityBuild-ZipFile/Editor/Ionic.Zip.dll rename to ZipFile/Editor/Ionic.Zip.dll diff --git a/UnityBuild-ZipFile/Editor/Ionic.Zip.dll.meta b/ZipFile/Editor/Ionic.Zip.dll.meta similarity index 100% rename from UnityBuild-ZipFile/Editor/Ionic.Zip.dll.meta rename to ZipFile/Editor/Ionic.Zip.dll.meta diff --git a/ZipFile/Editor/ZipFileOperation.cs b/ZipFile/Editor/ZipFileOperation.cs new file mode 100644 index 0000000..e659a92 --- /dev/null +++ b/ZipFile/Editor/ZipFileOperation.cs @@ -0,0 +1,66 @@ +using System; +using System.IO; +using Ionic.Zip; +using SuperUnityBuild.BuildTool; +using UnityEngine; + +namespace SuperUnityBuild.BuildActions +{ + public class ZipFileOperation : BuildAction, IPreBuildAction, IPreBuildPerPlatformAction, IPostBuildAction, IPostBuildPerPlatformAction + { + public string inputPath = "$BUILDPATH"; + public string outputPath = "$BUILDPATH"; + public string outputFileName = "$PRODUCT_NAME-$RELEASE_TYPE-$YEAR_$MONTH_$DAY.zip"; + + public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, System.DateTime buildTime, ref UnityEditor.BuildOptions options, string configKey, string buildPath) + { + string resolvedOutputPath = Path.Combine(outputPath.Replace("$BUILDPATH", buildPath), outputFileName); + resolvedOutputPath = BuildProject.ResolvePath(resolvedOutputPath, releaseType, platform, architecture, distribution, buildTime); + + string resolvedInputPath = inputPath.Replace("$BUILDPATH", buildPath); + resolvedInputPath = BuildProject.ResolvePath(resolvedInputPath, releaseType, platform, architecture, distribution, buildTime); + + if (!resolvedOutputPath.EndsWith(".zip")) + resolvedOutputPath += ".zip"; + + PerformZip(Path.GetFullPath(resolvedInputPath), Path.GetFullPath(resolvedOutputPath)); + } + + private void PerformZip(string inputPath, string outputPath) + { + try + { + if (!Directory.Exists(inputPath)) + { + BuildNotificationList.instance.AddNotification(new BuildNotification( + BuildNotification.Category.Error, + "Zip Operation Failed.", string.Format("Input path does not exist: {0}", inputPath), + true, null)); + return; + } + + // Make sure that all parent directories in path are already created. + string parentPath = Path.GetDirectoryName(outputPath); + if (!Directory.Exists(parentPath)) + { + Directory.CreateDirectory(parentPath); + } + + // Delete old file if it exists. + if (File.Exists(outputPath)) + File.Delete(outputPath); + + using (ZipFile zip = new ZipFile(outputPath)) + { + zip.ParallelDeflateThreshold = -1; // Parallel deflate is bugged in DotNetZip, so we need to disable it. + zip.AddDirectory(inputPath); + zip.Save(); + } + } + catch (Exception ex) + { + Debug.LogError(ex.ToString()); + } + } + } +} \ No newline at end of file diff --git a/UnityBuild-ZipFile/Editor/ZipFileOperation.cs.meta b/ZipFile/Editor/ZipFileOperation.cs.meta similarity index 100% rename from UnityBuild-ZipFile/Editor/ZipFileOperation.cs.meta rename to ZipFile/Editor/ZipFileOperation.cs.meta diff --git a/UnityBuild-ZipFile/README.md b/ZipFile/README.md similarity index 100% rename from UnityBuild-ZipFile/README.md rename to ZipFile/README.md diff --git a/UnityBuild-ZipFile/README.md.meta b/ZipFile/README.md.meta similarity index 100% rename from UnityBuild-ZipFile/README.md.meta rename to ZipFile/README.md.meta From 2c9582b39ccf33b394225bc33ec56eaed18eaff8 Mon Sep 17 00:00:00 2001 From: Robin North Date: Thu, 8 Apr 2021 13:14:33 +0100 Subject: [PATCH 08/53] Disable XRSettings build action on Unity 2020.2+ --- XRSettings/Editor/XRSettings.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/XRSettings/Editor/XRSettings.cs b/XRSettings/Editor/XRSettings.cs index 5cf049a..1ed94e1 100644 --- a/XRSettings/Editor/XRSettings.cs +++ b/XRSettings/Editor/XRSettings.cs @@ -2,6 +2,7 @@ #define SUPPORTS_OCULUS_V2_SIGNING #endif +#if !UNITY_2020_2_OR_NEWER using System; using System.Collections.Generic; using SuperUnityBuild.BuildTool; @@ -86,4 +87,5 @@ public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform } } } -} \ No newline at end of file +} +#endif \ No newline at end of file From 4445870fe3dfc143701b736bf959bfc23bbace17 Mon Sep 17 00:00:00 2001 From: Robin North Date: Thu, 8 Apr 2021 15:25:13 +0100 Subject: [PATCH 09/53] Support XRPluginManagement@4.0.0 --- XRPluginManagement/Editor/XRPluginManagement.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XRPluginManagement/Editor/XRPluginManagement.cs b/XRPluginManagement/Editor/XRPluginManagement.cs index f2b08ad..b8ecf1e 100644 --- a/XRPluginManagement/Editor/XRPluginManagement.cs +++ b/XRPluginManagement/Editor/XRPluginManagement.cs @@ -21,7 +21,7 @@ public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform generalSettings.InitManagerOnStart = InitializeXROnStartup; - settingsManager.loaders = XRPlugins; + settingsManager.TrySetLoaders(XRPlugins); } } } From ce5983974a8ae6ed2effe460e43cffd3966b4f39 Mon Sep 17 00:00:00 2001 From: Robin North Date: Fri, 31 Jul 2020 15:55:23 +0100 Subject: [PATCH 10/53] Enable use of build $VERSION replacement to file operation paths --- FileUtility/Editor/FileOperation.cs | 23 ++++++++++++++++----- FileUtility/Editor/FolderOperation.cs | 29 ++++++++++++++++++--------- 2 files changed, 38 insertions(+), 14 deletions(-) diff --git a/FileUtility/Editor/FileOperation.cs b/FileUtility/Editor/FileOperation.cs index c7e8109..f5b5d1b 100644 --- a/FileUtility/Editor/FileOperation.cs +++ b/FileUtility/Editor/FileOperation.cs @@ -22,16 +22,20 @@ public enum Operation public override void Execute() { + string version = BuildSettings.productParameters.lastGeneratedVersion; + string resolvedInputPath = ReplaceVersion(inputPath, version); + string resolvedOutputPath = ReplaceVersion(outputPath, version); + switch (operation) { case Operation.Copy: - Copy(inputPath, outputPath); + Copy(resolvedInputPath, resolvedOutputPath); break; case Operation.Move: - Move(inputPath, outputPath); + Move(resolvedInputPath, resolvedOutputPath); break; case Operation.Delete: - Delete(inputPath); + Delete(resolvedInputPath); break; } @@ -40,8 +44,12 @@ public override void Execute() public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) { - string resolvedInputPath = BuildProject.ResolvePath(inputPath.Replace("$BUILDPATH", buildPath), releaseType, platform, architecture, distribution, buildTime); - string resolvedOutputPath = BuildProject.ResolvePath(outputPath.Replace("$BUILDPATH", buildPath), releaseType, platform, architecture, distribution, buildTime); + string version = BuildSettings.productParameters.lastGeneratedVersion; + string resolvedInputPath = ReplaceVersion(inputPath, version); + string resolvedOutputPath = ReplaceVersion(outputPath, version); + + resolvedInputPath = BuildProject.ResolvePath(resolvedInputPath.Replace("$BUILDPATH", buildPath), releaseType, platform, architecture, distribution, buildTime); + resolvedOutputPath = BuildProject.ResolvePath(resolvedOutputPath.Replace("$BUILDPATH", buildPath), releaseType, platform, architecture, distribution, buildTime); switch (operation) { @@ -74,6 +82,11 @@ protected override void DrawProperties(SerializedObject obj) EditorGUILayout.PropertyField(obj.FindProperty("outputPath")); } + private string ReplaceVersion(string path, string version) + { + return path.Replace("$VERSION", version); + } + private void Move(string inputPath, string outputPath, bool overwrite = true) { bool containsWildcard = string.IsNullOrEmpty(inputPath) ? false : Path.GetFileNameWithoutExtension(inputPath).Contains("*"); diff --git a/FileUtility/Editor/FolderOperation.cs b/FileUtility/Editor/FolderOperation.cs index 161dc61..3122ab7 100644 --- a/FileUtility/Editor/FolderOperation.cs +++ b/FileUtility/Editor/FolderOperation.cs @@ -1,7 +1,6 @@ -using System.Collections; -using System.Diagnostics; -using System.IO; + using SuperUnityBuild.BuildTool; +using System.IO; using UnityEditor; using UnityEngine; @@ -25,16 +24,20 @@ public enum Operation public override void Execute() { + string version = BuildSettings.productParameters.lastGeneratedVersion; + string resolvedInputPath = ReplaceVersion(inputPath, version); + string resolvedOutputPath = ReplaceVersion(outputPath, version); + switch (operation) { case Operation.Copy: - Copy(inputPath, outputPath); + Copy(resolvedInputPath, resolvedOutputPath); break; case Operation.Move: - Move(inputPath, outputPath); + Move(resolvedInputPath, resolvedOutputPath); break; case Operation.Delete: - Delete(inputPath); + Delete(resolvedInputPath); break; } @@ -43,8 +46,12 @@ public override void Execute() public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) { - string resolvedInputPath = BuildProject.ResolvePath(inputPath.Replace("$BUILDPATH", buildPath), releaseType, platform, architecture, distribution, buildTime); - string resolvedOutputPath = BuildProject.ResolvePath(outputPath.Replace("$BUILDPATH", buildPath), releaseType, platform, architecture, distribution, buildTime); + string version = BuildSettings.productParameters.lastGeneratedVersion; + string resolvedInputPath = ReplaceVersion(inputPath, version); + string resolvedOutputPath = ReplaceVersion(outputPath, version); + + resolvedInputPath = BuildProject.ResolvePath(resolvedInputPath.Replace("$BUILDPATH", buildPath), releaseType, platform, architecture, distribution, buildTime); + resolvedOutputPath = BuildProject.ResolvePath(resolvedOutputPath.Replace("$BUILDPATH", buildPath), releaseType, platform, architecture, distribution, buildTime); switch (operation) { @@ -71,6 +78,11 @@ protected override void DrawProperties(SerializedObject obj) EditorGUILayout.PropertyField(obj.FindProperty("outputPath")); } + private string ReplaceVersion(string path, string version) + { + return path.Replace("$VERSION", version); + } + private void Move(string inputPath, string outputPath, bool overwrite = true) { bool success = true; @@ -174,5 +186,4 @@ private void Delete(string inputPath) } } } - } \ No newline at end of file From f7342b9e9f23d9e0c3ebedbac2199ed911f0faf7 Mon Sep 17 00:00:00 2001 From: Robin North Date: Thu, 8 Apr 2021 16:37:08 +0100 Subject: [PATCH 11/53] Fix Linux deprecation warnings in ItchUploader on Unity 2019.2+ --- ItchUploader/Editor/UploadItch.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/ItchUploader/Editor/UploadItch.cs b/ItchUploader/Editor/UploadItch.cs index d1c7755..e75c2cd 100644 --- a/ItchUploader/Editor/UploadItch.cs +++ b/ItchUploader/Editor/UploadItch.cs @@ -52,9 +52,11 @@ public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform case BuildTarget.StandaloneOSXIntel64: case BuildTarget.StandaloneOSXUniversal: #endif +#if !UNITY_2019_2_OR_NEWER case BuildTarget.StandaloneLinux: - case BuildTarget.StandaloneLinux64: case BuildTarget.StandaloneLinuxUniversal: +#endif + case BuildTarget.StandaloneLinux64: // Fix exe permissions for Linux/OSX. scriptArguments.Append("--fix-permissions "); break; @@ -154,12 +156,14 @@ private static string GetChannelName(BuildTarget target) return WINDOWS + "-x64"; // Linux +#if !UNITY_2019_2_OR_NEWER case BuildTarget.StandaloneLinux: return LINUX + "-x86"; - case BuildTarget.StandaloneLinux64: - return LINUX + "-x64"; case BuildTarget.StandaloneLinuxUniversal: return LINUX + "-universal"; +#endif + case BuildTarget.StandaloneLinux64: + return LINUX + "-x64"; // OSX #if UNITY_2017_3_OR_NEWER From dcf9991e2431aa4ba9a6f656b318537ff7ae655d Mon Sep 17 00:00:00 2001 From: Robin North Date: Thu, 8 Apr 2021 16:39:23 +0100 Subject: [PATCH 12/53] Standardized code style - Apply uniform code format - Specify code conventions with .editorconfig - Normalize line endings --- .editorconfig | 227 ++++++++++++++++++++++++ .gitattributes | 1 + AssetBundle/Editor/BuildAssetBundles.cs | 4 +- FileUtility/Editor/FileOperation.cs | 6 +- FileUtility/Editor/FolderOperation.cs | 13 +- ItchUploader/Editor/UploadItch.cs | 6 +- ScriptRunner/Editor/ScriptRunner.cs | 2 +- XRSettings/Editor/XRSettings.cs | 2 +- ZipFile/Editor/ZipFileOperation.cs | 2 +- 9 files changed, 242 insertions(+), 21 deletions(-) create mode 100644 .editorconfig create mode 100644 .gitattributes diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..01de2e0 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,227 @@ +# EditorConfig helps developers define and maintain consistent +# coding styles between different editors and IDEs +# editorconfig.org + +root = true + + +[*] + +# Change these settings to your own preference +indent_style = space +indent_size = 4 + +# We recommend you to keep these unchanged +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +indent_style = tab +trim_trailing_whitespace = false + +[{manifest.json,package.json}] +indent_style = space +indent_size = 2 + +# Solution Files +[*.sln] +indent_style = tab + +# XML Project Files +[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}] +indent_size = 2 + +# C# files +[*.cs] + +#### .NET Coding Conventions #### + +# Organize usings +dotnet_separate_import_directive_groups = false +dotnet_sort_system_directives_first = false +file_header_template = unset + +# this. and Me. preferences +dotnet_style_qualification_for_event = false:silent +dotnet_style_qualification_for_field = false:silent +dotnet_style_qualification_for_method = false:silent +dotnet_style_qualification_for_property = false:silent + +# Language keywords vs BCL types preferences +dotnet_style_predefined_type_for_locals_parameters_members = true:silent +dotnet_style_predefined_type_for_member_access = true:silent + +# Parentheses preferences +dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent +dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent +dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent +dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent + +# Modifier preferences +dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent + +# Expression-level preferences +dotnet_style_coalesce_expression = true:suggestion +dotnet_style_collection_initializer = true:suggestion +dotnet_style_explicit_tuple_names = true:suggestion +dotnet_style_null_propagation = true:suggestion +dotnet_style_object_initializer = true:suggestion +dotnet_style_operator_placement_when_wrapping = beginning_of_line +dotnet_style_prefer_auto_properties = true:silent +dotnet_style_prefer_compound_assignment = true:suggestion +dotnet_style_prefer_conditional_expression_over_assignment = true:silent +dotnet_style_prefer_conditional_expression_over_return = true:silent +dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion +dotnet_style_prefer_inferred_tuple_names = true:suggestion +dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion +dotnet_style_prefer_simplified_boolean_expressions = true:suggestion +dotnet_style_prefer_simplified_interpolation = true:suggestion + +# Field preferences +dotnet_style_readonly_field = true:suggestion + +# Parameter preferences +dotnet_code_quality_unused_parameters = all:suggestion + +# Suppression preferences +dotnet_remove_unnecessary_suppression_exclusions = none + +#### C# Coding Conventions #### + +# var preferences +csharp_style_var_elsewhere = false:silent +csharp_style_var_for_built_in_types = false:silent +csharp_style_var_when_type_is_apparent = false:silent + +# Expression-bodied members +csharp_style_expression_bodied_accessors = true:silent +csharp_style_expression_bodied_constructors = false:silent +csharp_style_expression_bodied_indexers = true:silent +csharp_style_expression_bodied_lambdas = true:silent +csharp_style_expression_bodied_local_functions = false:silent +csharp_style_expression_bodied_methods = false:silent +csharp_style_expression_bodied_operators = false:silent +csharp_style_expression_bodied_properties = true:silent + +# Pattern matching preferences +csharp_style_pattern_matching_over_as_with_null_check = true:suggestion +csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion +csharp_style_prefer_not_pattern = true:suggestion +csharp_style_prefer_pattern_matching = true:silent +csharp_style_prefer_switch_expression = true:suggestion + +# Null-checking preferences +csharp_style_conditional_delegate_call = true:suggestion + +# Modifier preferences +csharp_prefer_static_local_function = true:suggestion +csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:silent + +# Code-block preferences +csharp_prefer_braces = true:silent +csharp_prefer_simple_using_statement = true:suggestion + +# Expression-level preferences +csharp_prefer_simple_default_expression = true:suggestion +csharp_style_deconstructed_variable_declaration = true:suggestion +csharp_style_inlined_variable_declaration = true:suggestion +csharp_style_pattern_local_over_anonymous_function = true:suggestion +csharp_style_prefer_index_operator = true:suggestion +csharp_style_prefer_range_operator = true:suggestion +csharp_style_throw_expression = true:suggestion +csharp_style_unused_value_assignment_preference = discard_variable:suggestion +csharp_style_unused_value_expression_statement_preference = discard_variable:silent + +# 'using' directive preferences +csharp_using_directive_placement = inside_namespace:silent + +#### C# Formatting Rules #### + +# New line preferences +csharp_new_line_before_catch = true +csharp_new_line_before_else = true +csharp_new_line_before_finally = true +csharp_new_line_before_members_in_anonymous_types = true +csharp_new_line_before_members_in_object_initializers = true +csharp_new_line_before_open_brace = all +csharp_new_line_between_query_expression_clauses = true + +# Indentation preferences +csharp_indent_block_contents = true +csharp_indent_braces = false +csharp_indent_case_contents = true +csharp_indent_case_contents_when_block = true +csharp_indent_labels = one_less_than_current +csharp_indent_switch_labels = true + +# Space preferences +csharp_space_after_cast = false +csharp_space_after_colon_in_inheritance_clause = true +csharp_space_after_comma = true +csharp_space_after_dot = false +csharp_space_after_keywords_in_control_flow_statements = true +csharp_space_after_semicolon_in_for_statement = true +csharp_space_around_binary_operators = before_and_after +csharp_space_around_declaration_statements = false +csharp_space_before_colon_in_inheritance_clause = true +csharp_space_before_comma = false +csharp_space_before_dot = false +csharp_space_before_open_square_brackets = false +csharp_space_before_semicolon_in_for_statement = false +csharp_space_between_empty_square_brackets = false +csharp_space_between_method_call_empty_parameter_list_parentheses = false +csharp_space_between_method_call_name_and_opening_parenthesis = false +csharp_space_between_method_call_parameter_list_parentheses = false +csharp_space_between_method_declaration_empty_parameter_list_parentheses = false +csharp_space_between_method_declaration_name_and_open_parenthesis = false +csharp_space_between_method_declaration_parameter_list_parentheses = false +csharp_space_between_parentheses = false +csharp_space_between_square_brackets = false + +# Wrapping preferences +csharp_preserve_single_line_blocks = true +csharp_preserve_single_line_statements = true + +#### Naming styles #### + +# Naming rules + +dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion +dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface +dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i + +dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.types_should_be_pascal_case.symbols = types +dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members +dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case + +# Symbol specifications + +dotnet_naming_symbols.interface.applicable_kinds = interface +dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.interface.required_modifiers = + +dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum +dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.types.required_modifiers = + +dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method +dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.non_field_members.required_modifiers = + +# Naming styles + +dotnet_naming_style.pascal_case.required_prefix = +dotnet_naming_style.pascal_case.required_suffix = +dotnet_naming_style.pascal_case.word_separator = +dotnet_naming_style.pascal_case.capitalization = pascal_case + +dotnet_naming_style.begins_with_i.required_prefix = I +dotnet_naming_style.begins_with_i.required_suffix = +dotnet_naming_style.begins_with_i.word_separator = +dotnet_naming_style.begins_with_i.capitalization = pascal_case \ No newline at end of file diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..6313b56 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf diff --git a/AssetBundle/Editor/BuildAssetBundles.cs b/AssetBundle/Editor/BuildAssetBundles.cs index 89f4275..2f9029d 100644 --- a/AssetBundle/Editor/BuildAssetBundles.cs +++ b/AssetBundle/Editor/BuildAssetBundles.cs @@ -10,7 +10,7 @@ public sealed class BuildAssetBundles : BuildAction, IPreBuildPerPlatformAction { #region Public Variables - [SuperUnityBuild.BuildTool.FilePath(true, true, "Select AssetBundle output directory.")] + [BuildTool.FilePath(true, true, "Select AssetBundle output directory.")] public string baseBuildPath = Path.Combine("bin", "bundles"); public string innerBuildPath = Path.Combine("$PLATFORM", "$ARCHITECTURE"); @@ -92,4 +92,4 @@ private void Build(BuildPlatform platform, BuildArchitecture arch) #endregion } -} \ No newline at end of file +} diff --git a/FileUtility/Editor/FileOperation.cs b/FileUtility/Editor/FileOperation.cs index c7e8109..89e4b41 100644 --- a/FileUtility/Editor/FileOperation.cs +++ b/FileUtility/Editor/FileOperation.cs @@ -13,9 +13,9 @@ public enum Operation Delete, } - [SuperUnityBuild.BuildTool.FilePath(false)] + [BuildTool.FilePath(false)] public string inputPath; - [SuperUnityBuild.BuildTool.FilePath(false)] + [BuildTool.FilePath(false)] public string outputPath; public bool recursiveSearch = true; public Operation operation; @@ -182,4 +182,4 @@ private void Delete(string inputPath) } } } -} \ No newline at end of file +} diff --git a/FileUtility/Editor/FolderOperation.cs b/FileUtility/Editor/FolderOperation.cs index 161dc61..80104f7 100644 --- a/FileUtility/Editor/FolderOperation.cs +++ b/FileUtility/Editor/FolderOperation.cs @@ -1,13 +1,9 @@ -using System.Collections; -using System.Diagnostics; -using System.IO; +using System.IO; using SuperUnityBuild.BuildTool; using UnityEditor; -using UnityEngine; namespace SuperUnityBuild.BuildActions { - public class FolderOperation : BuildAction, IPreBuildAction, IPreBuildPerPlatformAction, IPostBuildAction, IPostBuildPerPlatformAction { public enum Operation @@ -17,9 +13,9 @@ public enum Operation Delete, } - [SuperUnityBuild.BuildTool.FilePath(true)] + [BuildTool.FilePath(true)] public string inputPath; - [SuperUnityBuild.BuildTool.FilePath(true)] + [BuildTool.FilePath(true)] public string outputPath; public Operation operation; @@ -174,5 +170,4 @@ private void Delete(string inputPath) } } } - -} \ No newline at end of file +} diff --git a/ItchUploader/Editor/UploadItch.cs b/ItchUploader/Editor/UploadItch.cs index e75c2cd..7619cd4 100644 --- a/ItchUploader/Editor/UploadItch.cs +++ b/ItchUploader/Editor/UploadItch.cs @@ -7,7 +7,6 @@ namespace SuperUnityBuild.BuildActions { - public class UploadItch : BuildAction, IPostBuildPerPlatformAction { private const string WINDOWS = "windows"; @@ -15,7 +14,7 @@ public class UploadItch : BuildAction, IPostBuildPerPlatformAction private const string LINUX = "linux"; private const string ANDROID = "android"; - [SuperUnityBuild.BuildTool.FilePath(false, true, "Path to butler.exe")] + [BuildTool.FilePath(false, true, "Path to butler.exe")] public string pathToButlerExe = ""; public string nameOfItchUser = ""; public string nameOfItchGame = ""; @@ -188,5 +187,4 @@ private static string GetChannelName(BuildTarget target) #endregion } - -} \ No newline at end of file +} diff --git a/ScriptRunner/Editor/ScriptRunner.cs b/ScriptRunner/Editor/ScriptRunner.cs index 4b10399..1f20056 100644 --- a/ScriptRunner/Editor/ScriptRunner.cs +++ b/ScriptRunner/Editor/ScriptRunner.cs @@ -7,7 +7,7 @@ namespace SuperUnityBuild.BuildActions { public class ScriptRunner : BuildAction, IPreBuildAction, IPreBuildPerPlatformAction, IPostBuildAction, IPostBuildPerPlatformAction { - [SuperUnityBuild.BuildTool.FilePath(false, true, "Select program/script to run.")] + [BuildTool.FilePath(false, true, "Select program/script to run.")] public string scriptPath = ""; public string scriptArguments = ""; diff --git a/XRSettings/Editor/XRSettings.cs b/XRSettings/Editor/XRSettings.cs index 1ed94e1..5f16f2d 100644 --- a/XRSettings/Editor/XRSettings.cs +++ b/XRSettings/Editor/XRSettings.cs @@ -88,4 +88,4 @@ public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform } } } -#endif \ No newline at end of file +#endif diff --git a/ZipFile/Editor/ZipFileOperation.cs b/ZipFile/Editor/ZipFileOperation.cs index e659a92..a59ffa8 100644 --- a/ZipFile/Editor/ZipFileOperation.cs +++ b/ZipFile/Editor/ZipFileOperation.cs @@ -63,4 +63,4 @@ private void PerformZip(string inputPath, string outputPath) } } } -} \ No newline at end of file +} From 7db739c51d8be8ae3e7bc7d42ae6f57733091004 Mon Sep 17 00:00:00 2001 From: Robin North Date: Thu, 8 Apr 2021 16:40:06 +0100 Subject: [PATCH 13/53] Update .gitignore --- .gitignore | 110 ++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 93 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index 129e372..0b602e9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,24 +1,100 @@ -################ -# Sublime Text # -################ -*.sublime-project -*.sublime-workspace -###################### -# Visual Studio Code # -###################### -.vscode/ +# Created by https://www.toptal.com/developers/gitignore/api/sublimetext,vscode,windows,macos +# Edit at https://www.toptal.com/developers/gitignore?templates=sublimetext,vscode,windows,macos -########### -# OS Junk # -########### +### macOS ### +# General .DS_Store -.DS_Store? +.AppleDouble +.LSOverride + +# Icon must end with two \r +#Icon + + +# Thumbnails ._* -*.swp + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd .Spotlight-V100 +.TemporaryItems .Trashes -Icon? -ehthumbs.db +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### SublimeText ### +# Cache files for Sublime Text +*.tmlanguage.cache +*.tmPreferences.cache +*.stTheme.cache + +# Workspace files are user-specific +*.sublime-workspace + +# Project files should be checked into the repository, unless a significant +# proportion of contributors will probably not be using Sublime Text +*.sublime-project + +# SFTP configuration file +sftp-config.json + +# Package control specific files +Package Control.last-run +Package Control.ca-list +Package Control.ca-bundle +Package Control.system-ca-bundle +Package Control.cache/ +Package Control.ca-certs/ +Package Control.merged-ca-bundle +Package Control.user-ca-bundle +oscrypto-ca-bundle.crt +bh_unicode_properties.cache + +# Sublime-github package stores a github token in this file +# https://packagecontrol.io/packages/sublime-github +GitHub.sublime-settings + +### vscode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +### Windows ### +# Windows thumbnail cache files Thumbs.db -$RECYCLE.BIN/ \ No newline at end of file +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# End of https://www.toptal.com/developers/gitignore/api/sublimetext,vscode,windows,macos From 45f5e26527c0b892be7a78a28d0adb764453bbba Mon Sep 17 00:00:00 2001 From: Robin North Date: Thu, 15 Apr 2021 13:36:01 +0100 Subject: [PATCH 14/53] UPM support --- AssetBundle/Editor.meta | 9 --- CHANGELOG.md | 20 +++++ .../Editor.meta => CHANGELOG.md.meta | 5 +- PackageManagement/Editor.meta => Editor.meta | 2 +- AssetBundle.meta => Editor/AssetBundle.meta | 0 .../AssetBundle}/BuildAssetBundles.cs | 0 .../AssetBundle}/BuildAssetBundles.cs.meta | 0 {AssetBundle => Editor/AssetBundle}/README.md | 0 .../AssetBundle}/README.md.meta | 0 FileUtility.meta => Editor/FileUtility.meta | 0 .../FileUtility}/FileOperation.cs | 0 .../FileUtility}/FileOperation.cs.meta | 0 .../FileUtility}/FolderOperation.cs | 0 .../FileUtility}/FolderOperation.cs.meta | 0 {FileUtility => Editor/FileUtility}/README.md | 0 .../FileUtility}/README.md.meta | 0 ItchUploader.meta => Editor/ItchUploader.meta | 0 .../ItchUploader}/README.md | 0 .../ItchUploader}/README.md.meta | 0 .../ItchUploader}/UploadItch.cs | 0 .../ItchUploader}/UploadItch.cs.meta | 0 .../OverrideDefines.meta | 0 .../OverrideDefines}/OverrideDefines.cs | 0 .../OverrideDefines}/OverrideDefines.cs.meta | 0 .../OverrideDefines}/README.md | 0 .../OverrideDefines}/README.md.meta | 0 .../PackageManagement.meta | 0 .../PackageManagement}/PackageManagement.cs | 0 .../PackageManagement.cs.meta | 0 .../PackageManagement}/README.md | 0 .../PackageManagement}/README.md.meta | 0 .../PerBuildPlayerSettings.meta | 0 .../PerBuildPlayerSettings.cs | 0 .../PerBuildPlayerSettings.cs.meta | 0 .../PerBuildPlayerSettings}/README.md | 0 .../PerBuildPlayerSettings}/README.md.meta | 0 ScriptRunner.meta => Editor/ScriptRunner.meta | 0 .../ScriptRunner}/README.md | 0 .../ScriptRunner}/README.md.meta | 0 .../ScriptRunner}/ScriptRunner.cs | 0 .../ScriptRunner}/ScriptRunner.cs.meta | 0 ...SuperUnityBuild.BuildActions.Editor.asmdef | 26 ++++++ ...UnityBuild.BuildActions.Editor.asmdef.meta | 5 +- .../XRPluginManagement.meta | 0 .../XRPluginManagement}/README.md | 0 .../XRPluginManagement}/README.md.meta | 0 .../XRPluginManagement}/XRPluginManagement.cs | 4 +- .../XRPluginManagement.cs.meta | 0 XRSettings.meta => Editor/XRSettings.meta | 0 Editor/XRSettings/README.md | 3 + .../XRSettings}/README.md.meta | 0 .../XRSettings}/XRSettings.cs | 0 .../XRSettings}/XRSettings.cs.meta | 0 ZipFile.meta => Editor/ZipFile.meta | 0 .../ZipFile}/Ionic.Zip.License.txt | 0 .../ZipFile}/Ionic.Zip.License.txt.meta | 0 .../Editor => Editor/ZipFile}/Ionic.Zip.dll | Bin .../ZipFile}/Ionic.Zip.dll.meta | 21 +++-- {ZipFile => Editor/ZipFile}/README.md | 0 {ZipFile => Editor/ZipFile}/README.md.meta | 0 .../ZipFile}/ZipFileOperation.cs | 0 .../ZipFile}/ZipFileOperation.cs.meta | 0 FileUtility/Editor.meta | 9 --- ItchUploader/Editor.meta | 9 --- OverrideDefines/Editor.meta | 9 --- README.md | 74 ++++++++++++------ ScriptRunner/Editor.meta | 9 --- XRSettings/README.md | 2 - ZipFile/Editor.meta | 9 --- package.json | 11 +++ XRSettings/Editor.meta => package.json.meta | 5 +- 71 files changed, 137 insertions(+), 95 deletions(-) delete mode 100644 AssetBundle/Editor.meta create mode 100644 CHANGELOG.md rename PerBuildPlayerSettings/Editor.meta => CHANGELOG.md.meta (57%) rename PackageManagement/Editor.meta => Editor.meta (77%) rename AssetBundle.meta => Editor/AssetBundle.meta (100%) rename {AssetBundle/Editor => Editor/AssetBundle}/BuildAssetBundles.cs (100%) rename {AssetBundle/Editor => Editor/AssetBundle}/BuildAssetBundles.cs.meta (100%) rename {AssetBundle => Editor/AssetBundle}/README.md (100%) rename {AssetBundle => Editor/AssetBundle}/README.md.meta (100%) rename FileUtility.meta => Editor/FileUtility.meta (100%) rename {FileUtility/Editor => Editor/FileUtility}/FileOperation.cs (100%) rename {FileUtility/Editor => Editor/FileUtility}/FileOperation.cs.meta (100%) rename {FileUtility/Editor => Editor/FileUtility}/FolderOperation.cs (100%) rename {FileUtility/Editor => Editor/FileUtility}/FolderOperation.cs.meta (100%) rename {FileUtility => Editor/FileUtility}/README.md (100%) rename {FileUtility => Editor/FileUtility}/README.md.meta (100%) rename ItchUploader.meta => Editor/ItchUploader.meta (100%) rename {ItchUploader => Editor/ItchUploader}/README.md (100%) rename {ItchUploader => Editor/ItchUploader}/README.md.meta (100%) rename {ItchUploader/Editor => Editor/ItchUploader}/UploadItch.cs (100%) rename {ItchUploader/Editor => Editor/ItchUploader}/UploadItch.cs.meta (100%) rename OverrideDefines.meta => Editor/OverrideDefines.meta (100%) rename {OverrideDefines/Editor => Editor/OverrideDefines}/OverrideDefines.cs (100%) rename {OverrideDefines/Editor => Editor/OverrideDefines}/OverrideDefines.cs.meta (100%) rename {OverrideDefines => Editor/OverrideDefines}/README.md (100%) rename {OverrideDefines => Editor/OverrideDefines}/README.md.meta (100%) rename PackageManagement.meta => Editor/PackageManagement.meta (100%) rename {PackageManagement/Editor => Editor/PackageManagement}/PackageManagement.cs (100%) rename {PackageManagement/Editor => Editor/PackageManagement}/PackageManagement.cs.meta (100%) rename {PackageManagement => Editor/PackageManagement}/README.md (100%) rename {PackageManagement => Editor/PackageManagement}/README.md.meta (100%) rename PerBuildPlayerSettings.meta => Editor/PerBuildPlayerSettings.meta (100%) rename {PerBuildPlayerSettings/Editor => Editor/PerBuildPlayerSettings}/PerBuildPlayerSettings.cs (100%) rename {PerBuildPlayerSettings/Editor => Editor/PerBuildPlayerSettings}/PerBuildPlayerSettings.cs.meta (100%) rename {PerBuildPlayerSettings => Editor/PerBuildPlayerSettings}/README.md (100%) rename {PerBuildPlayerSettings => Editor/PerBuildPlayerSettings}/README.md.meta (100%) rename ScriptRunner.meta => Editor/ScriptRunner.meta (100%) rename {ScriptRunner => Editor/ScriptRunner}/README.md (100%) rename {ScriptRunner => Editor/ScriptRunner}/README.md.meta (100%) rename {ScriptRunner/Editor => Editor/ScriptRunner}/ScriptRunner.cs (100%) rename {ScriptRunner/Editor => Editor/ScriptRunner}/ScriptRunner.cs.meta (100%) create mode 100644 Editor/SuperUnityBuild.BuildActions.Editor.asmdef rename XRPluginManagement/Editor.meta => Editor/SuperUnityBuild.BuildActions.Editor.asmdef.meta (57%) rename XRPluginManagement.meta => Editor/XRPluginManagement.meta (100%) rename {XRPluginManagement => Editor/XRPluginManagement}/README.md (100%) rename {XRPluginManagement => Editor/XRPluginManagement}/README.md.meta (100%) rename {XRPluginManagement/Editor => Editor/XRPluginManagement}/XRPluginManagement.cs (97%) rename {XRPluginManagement/Editor => Editor/XRPluginManagement}/XRPluginManagement.cs.meta (100%) rename XRSettings.meta => Editor/XRSettings.meta (100%) create mode 100644 Editor/XRSettings/README.md rename {XRSettings => Editor/XRSettings}/README.md.meta (100%) rename {XRSettings/Editor => Editor/XRSettings}/XRSettings.cs (100%) rename {XRSettings/Editor => Editor/XRSettings}/XRSettings.cs.meta (100%) rename ZipFile.meta => Editor/ZipFile.meta (100%) rename {ZipFile/Editor => Editor/ZipFile}/Ionic.Zip.License.txt (100%) rename {ZipFile/Editor => Editor/ZipFile}/Ionic.Zip.License.txt.meta (100%) rename {ZipFile/Editor => Editor/ZipFile}/Ionic.Zip.dll (100%) rename {ZipFile/Editor => Editor/ZipFile}/Ionic.Zip.dll.meta (55%) rename {ZipFile => Editor/ZipFile}/README.md (100%) rename {ZipFile => Editor/ZipFile}/README.md.meta (100%) rename {ZipFile/Editor => Editor/ZipFile}/ZipFileOperation.cs (100%) rename {ZipFile/Editor => Editor/ZipFile}/ZipFileOperation.cs.meta (100%) delete mode 100644 FileUtility/Editor.meta delete mode 100644 ItchUploader/Editor.meta delete mode 100644 OverrideDefines/Editor.meta delete mode 100644 ScriptRunner/Editor.meta delete mode 100644 XRSettings/README.md delete mode 100644 ZipFile/Editor.meta create mode 100644 package.json rename XRSettings/Editor.meta => package.json.meta (57%) diff --git a/AssetBundle/Editor.meta b/AssetBundle/Editor.meta deleted file mode 100644 index 435aa56..0000000 --- a/AssetBundle/Editor.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: 6d6b1f2c66a18ae45842f8fcaaad1a2c -folderAsset: yes -timeCreated: 1483567638 -licenseType: Pro -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..5bc26d2 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,20 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + + + +## [1.0.0] - 2021-04-15 + +This release includes all [previous commits][1.0.0] to the project, plus: + +### Added + +- Added UPM support. +- First tagged version. + +[unreleased]: https://github.com/superunitybuild/buildactions/compare/v1.0.0...HEAD +[1.0.0]: https://github.com/superunitybuild/buildactions/compare/5951d33...v1.0.0 diff --git a/PerBuildPlayerSettings/Editor.meta b/CHANGELOG.md.meta similarity index 57% rename from PerBuildPlayerSettings/Editor.meta rename to CHANGELOG.md.meta index 81757f9..fac9f98 100644 --- a/PerBuildPlayerSettings/Editor.meta +++ b/CHANGELOG.md.meta @@ -1,7 +1,6 @@ fileFormatVersion: 2 -guid: f44a4e5ad5055e34f8abc510986634c4 -folderAsset: yes -DefaultImporter: +guid: 386bdbb0465b39e40bb97a14c8f95b13 +TextScriptImporter: externalObjects: {} userData: assetBundleName: diff --git a/PackageManagement/Editor.meta b/Editor.meta similarity index 77% rename from PackageManagement/Editor.meta rename to Editor.meta index d6bf2b8..50c8742 100644 --- a/PackageManagement/Editor.meta +++ b/Editor.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 968e595265f54ae4fb71a48da5819f9b +guid: 8a5f4d2c7f042ff45b3d4e9faa1fd276 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/AssetBundle.meta b/Editor/AssetBundle.meta similarity index 100% rename from AssetBundle.meta rename to Editor/AssetBundle.meta diff --git a/AssetBundle/Editor/BuildAssetBundles.cs b/Editor/AssetBundle/BuildAssetBundles.cs similarity index 100% rename from AssetBundle/Editor/BuildAssetBundles.cs rename to Editor/AssetBundle/BuildAssetBundles.cs diff --git a/AssetBundle/Editor/BuildAssetBundles.cs.meta b/Editor/AssetBundle/BuildAssetBundles.cs.meta similarity index 100% rename from AssetBundle/Editor/BuildAssetBundles.cs.meta rename to Editor/AssetBundle/BuildAssetBundles.cs.meta diff --git a/AssetBundle/README.md b/Editor/AssetBundle/README.md similarity index 100% rename from AssetBundle/README.md rename to Editor/AssetBundle/README.md diff --git a/AssetBundle/README.md.meta b/Editor/AssetBundle/README.md.meta similarity index 100% rename from AssetBundle/README.md.meta rename to Editor/AssetBundle/README.md.meta diff --git a/FileUtility.meta b/Editor/FileUtility.meta similarity index 100% rename from FileUtility.meta rename to Editor/FileUtility.meta diff --git a/FileUtility/Editor/FileOperation.cs b/Editor/FileUtility/FileOperation.cs similarity index 100% rename from FileUtility/Editor/FileOperation.cs rename to Editor/FileUtility/FileOperation.cs diff --git a/FileUtility/Editor/FileOperation.cs.meta b/Editor/FileUtility/FileOperation.cs.meta similarity index 100% rename from FileUtility/Editor/FileOperation.cs.meta rename to Editor/FileUtility/FileOperation.cs.meta diff --git a/FileUtility/Editor/FolderOperation.cs b/Editor/FileUtility/FolderOperation.cs similarity index 100% rename from FileUtility/Editor/FolderOperation.cs rename to Editor/FileUtility/FolderOperation.cs diff --git a/FileUtility/Editor/FolderOperation.cs.meta b/Editor/FileUtility/FolderOperation.cs.meta similarity index 100% rename from FileUtility/Editor/FolderOperation.cs.meta rename to Editor/FileUtility/FolderOperation.cs.meta diff --git a/FileUtility/README.md b/Editor/FileUtility/README.md similarity index 100% rename from FileUtility/README.md rename to Editor/FileUtility/README.md diff --git a/FileUtility/README.md.meta b/Editor/FileUtility/README.md.meta similarity index 100% rename from FileUtility/README.md.meta rename to Editor/FileUtility/README.md.meta diff --git a/ItchUploader.meta b/Editor/ItchUploader.meta similarity index 100% rename from ItchUploader.meta rename to Editor/ItchUploader.meta diff --git a/ItchUploader/README.md b/Editor/ItchUploader/README.md similarity index 100% rename from ItchUploader/README.md rename to Editor/ItchUploader/README.md diff --git a/ItchUploader/README.md.meta b/Editor/ItchUploader/README.md.meta similarity index 100% rename from ItchUploader/README.md.meta rename to Editor/ItchUploader/README.md.meta diff --git a/ItchUploader/Editor/UploadItch.cs b/Editor/ItchUploader/UploadItch.cs similarity index 100% rename from ItchUploader/Editor/UploadItch.cs rename to Editor/ItchUploader/UploadItch.cs diff --git a/ItchUploader/Editor/UploadItch.cs.meta b/Editor/ItchUploader/UploadItch.cs.meta similarity index 100% rename from ItchUploader/Editor/UploadItch.cs.meta rename to Editor/ItchUploader/UploadItch.cs.meta diff --git a/OverrideDefines.meta b/Editor/OverrideDefines.meta similarity index 100% rename from OverrideDefines.meta rename to Editor/OverrideDefines.meta diff --git a/OverrideDefines/Editor/OverrideDefines.cs b/Editor/OverrideDefines/OverrideDefines.cs similarity index 100% rename from OverrideDefines/Editor/OverrideDefines.cs rename to Editor/OverrideDefines/OverrideDefines.cs diff --git a/OverrideDefines/Editor/OverrideDefines.cs.meta b/Editor/OverrideDefines/OverrideDefines.cs.meta similarity index 100% rename from OverrideDefines/Editor/OverrideDefines.cs.meta rename to Editor/OverrideDefines/OverrideDefines.cs.meta diff --git a/OverrideDefines/README.md b/Editor/OverrideDefines/README.md similarity index 100% rename from OverrideDefines/README.md rename to Editor/OverrideDefines/README.md diff --git a/OverrideDefines/README.md.meta b/Editor/OverrideDefines/README.md.meta similarity index 100% rename from OverrideDefines/README.md.meta rename to Editor/OverrideDefines/README.md.meta diff --git a/PackageManagement.meta b/Editor/PackageManagement.meta similarity index 100% rename from PackageManagement.meta rename to Editor/PackageManagement.meta diff --git a/PackageManagement/Editor/PackageManagement.cs b/Editor/PackageManagement/PackageManagement.cs similarity index 100% rename from PackageManagement/Editor/PackageManagement.cs rename to Editor/PackageManagement/PackageManagement.cs diff --git a/PackageManagement/Editor/PackageManagement.cs.meta b/Editor/PackageManagement/PackageManagement.cs.meta similarity index 100% rename from PackageManagement/Editor/PackageManagement.cs.meta rename to Editor/PackageManagement/PackageManagement.cs.meta diff --git a/PackageManagement/README.md b/Editor/PackageManagement/README.md similarity index 100% rename from PackageManagement/README.md rename to Editor/PackageManagement/README.md diff --git a/PackageManagement/README.md.meta b/Editor/PackageManagement/README.md.meta similarity index 100% rename from PackageManagement/README.md.meta rename to Editor/PackageManagement/README.md.meta diff --git a/PerBuildPlayerSettings.meta b/Editor/PerBuildPlayerSettings.meta similarity index 100% rename from PerBuildPlayerSettings.meta rename to Editor/PerBuildPlayerSettings.meta diff --git a/PerBuildPlayerSettings/Editor/PerBuildPlayerSettings.cs b/Editor/PerBuildPlayerSettings/PerBuildPlayerSettings.cs similarity index 100% rename from PerBuildPlayerSettings/Editor/PerBuildPlayerSettings.cs rename to Editor/PerBuildPlayerSettings/PerBuildPlayerSettings.cs diff --git a/PerBuildPlayerSettings/Editor/PerBuildPlayerSettings.cs.meta b/Editor/PerBuildPlayerSettings/PerBuildPlayerSettings.cs.meta similarity index 100% rename from PerBuildPlayerSettings/Editor/PerBuildPlayerSettings.cs.meta rename to Editor/PerBuildPlayerSettings/PerBuildPlayerSettings.cs.meta diff --git a/PerBuildPlayerSettings/README.md b/Editor/PerBuildPlayerSettings/README.md similarity index 100% rename from PerBuildPlayerSettings/README.md rename to Editor/PerBuildPlayerSettings/README.md diff --git a/PerBuildPlayerSettings/README.md.meta b/Editor/PerBuildPlayerSettings/README.md.meta similarity index 100% rename from PerBuildPlayerSettings/README.md.meta rename to Editor/PerBuildPlayerSettings/README.md.meta diff --git a/ScriptRunner.meta b/Editor/ScriptRunner.meta similarity index 100% rename from ScriptRunner.meta rename to Editor/ScriptRunner.meta diff --git a/ScriptRunner/README.md b/Editor/ScriptRunner/README.md similarity index 100% rename from ScriptRunner/README.md rename to Editor/ScriptRunner/README.md diff --git a/ScriptRunner/README.md.meta b/Editor/ScriptRunner/README.md.meta similarity index 100% rename from ScriptRunner/README.md.meta rename to Editor/ScriptRunner/README.md.meta diff --git a/ScriptRunner/Editor/ScriptRunner.cs b/Editor/ScriptRunner/ScriptRunner.cs similarity index 100% rename from ScriptRunner/Editor/ScriptRunner.cs rename to Editor/ScriptRunner/ScriptRunner.cs diff --git a/ScriptRunner/Editor/ScriptRunner.cs.meta b/Editor/ScriptRunner/ScriptRunner.cs.meta similarity index 100% rename from ScriptRunner/Editor/ScriptRunner.cs.meta rename to Editor/ScriptRunner/ScriptRunner.cs.meta diff --git a/Editor/SuperUnityBuild.BuildActions.Editor.asmdef b/Editor/SuperUnityBuild.BuildActions.Editor.asmdef new file mode 100644 index 0000000..a857334 --- /dev/null +++ b/Editor/SuperUnityBuild.BuildActions.Editor.asmdef @@ -0,0 +1,26 @@ +{ + "name": "SuperUnityBuild.BuildActions.Editor", + "rootNamespace": "SuperUnityBuild.BuildActions", + "references": [ + "GUID:bf7b7d9340660ea4495e1f45f0fc349d", + "GUID:e40ba710768534012815d3193fa296cb", + "GUID:f9fe0089ec81f4079af78eb2287a6163" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [ + { + "name": "com.unity.xr.management", + "expression": "", + "define": "UNITY_XR_MANAGEMENT" + } + ], + "noEngineReferences": false +} diff --git a/XRPluginManagement/Editor.meta b/Editor/SuperUnityBuild.BuildActions.Editor.asmdef.meta similarity index 57% rename from XRPluginManagement/Editor.meta rename to Editor/SuperUnityBuild.BuildActions.Editor.asmdef.meta index c0cdd80..df17054 100644 --- a/XRPluginManagement/Editor.meta +++ b/Editor/SuperUnityBuild.BuildActions.Editor.asmdef.meta @@ -1,7 +1,6 @@ fileFormatVersion: 2 -guid: 1f1dc6292a6d21244be65d0545041b64 -folderAsset: yes -DefaultImporter: +guid: 02dcfce5c35187844bcd78f712fd00c6 +AssemblyDefinitionImporter: externalObjects: {} userData: assetBundleName: diff --git a/XRPluginManagement.meta b/Editor/XRPluginManagement.meta similarity index 100% rename from XRPluginManagement.meta rename to Editor/XRPluginManagement.meta diff --git a/XRPluginManagement/README.md b/Editor/XRPluginManagement/README.md similarity index 100% rename from XRPluginManagement/README.md rename to Editor/XRPluginManagement/README.md diff --git a/XRPluginManagement/README.md.meta b/Editor/XRPluginManagement/README.md.meta similarity index 100% rename from XRPluginManagement/README.md.meta rename to Editor/XRPluginManagement/README.md.meta diff --git a/XRPluginManagement/Editor/XRPluginManagement.cs b/Editor/XRPluginManagement/XRPluginManagement.cs similarity index 97% rename from XRPluginManagement/Editor/XRPluginManagement.cs rename to Editor/XRPluginManagement/XRPluginManagement.cs index b8ecf1e..6585e69 100644 --- a/XRPluginManagement/Editor/XRPluginManagement.cs +++ b/Editor/XRPluginManagement/XRPluginManagement.cs @@ -1,6 +1,7 @@ +#if UNITY_XR_MANAGEMENT +using SuperUnityBuild.BuildTool; using System; using System.Collections.Generic; -using SuperUnityBuild.BuildTool; using UnityEditor; using UnityEditor.XR.Management; using UnityEngine; @@ -25,3 +26,4 @@ public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform } } } +#endif diff --git a/XRPluginManagement/Editor/XRPluginManagement.cs.meta b/Editor/XRPluginManagement/XRPluginManagement.cs.meta similarity index 100% rename from XRPluginManagement/Editor/XRPluginManagement.cs.meta rename to Editor/XRPluginManagement/XRPluginManagement.cs.meta diff --git a/XRSettings.meta b/Editor/XRSettings.meta similarity index 100% rename from XRSettings.meta rename to Editor/XRSettings.meta diff --git a/Editor/XRSettings/README.md b/Editor/XRSettings/README.md new file mode 100644 index 0000000..0181ee1 --- /dev/null +++ b/Editor/XRSettings/README.md @@ -0,0 +1,3 @@ +# SuperUnityBuild - XR Settings + +> Enable per-build legacy Unity XR settings diff --git a/XRSettings/README.md.meta b/Editor/XRSettings/README.md.meta similarity index 100% rename from XRSettings/README.md.meta rename to Editor/XRSettings/README.md.meta diff --git a/XRSettings/Editor/XRSettings.cs b/Editor/XRSettings/XRSettings.cs similarity index 100% rename from XRSettings/Editor/XRSettings.cs rename to Editor/XRSettings/XRSettings.cs diff --git a/XRSettings/Editor/XRSettings.cs.meta b/Editor/XRSettings/XRSettings.cs.meta similarity index 100% rename from XRSettings/Editor/XRSettings.cs.meta rename to Editor/XRSettings/XRSettings.cs.meta diff --git a/ZipFile.meta b/Editor/ZipFile.meta similarity index 100% rename from ZipFile.meta rename to Editor/ZipFile.meta diff --git a/ZipFile/Editor/Ionic.Zip.License.txt b/Editor/ZipFile/Ionic.Zip.License.txt similarity index 100% rename from ZipFile/Editor/Ionic.Zip.License.txt rename to Editor/ZipFile/Ionic.Zip.License.txt diff --git a/ZipFile/Editor/Ionic.Zip.License.txt.meta b/Editor/ZipFile/Ionic.Zip.License.txt.meta similarity index 100% rename from ZipFile/Editor/Ionic.Zip.License.txt.meta rename to Editor/ZipFile/Ionic.Zip.License.txt.meta diff --git a/ZipFile/Editor/Ionic.Zip.dll b/Editor/ZipFile/Ionic.Zip.dll similarity index 100% rename from ZipFile/Editor/Ionic.Zip.dll rename to Editor/ZipFile/Ionic.Zip.dll diff --git a/ZipFile/Editor/Ionic.Zip.dll.meta b/Editor/ZipFile/Ionic.Zip.dll.meta similarity index 55% rename from ZipFile/Editor/Ionic.Zip.dll.meta rename to Editor/ZipFile/Ionic.Zip.dll.meta index 74d024b..6096990 100644 --- a/ZipFile/Editor/Ionic.Zip.dll.meta +++ b/Editor/ZipFile/Ionic.Zip.dll.meta @@ -1,21 +1,30 @@ fileFormatVersion: 2 guid: f0d3c55c5daeb8b4aaadde69fcec4137 -timeCreated: 1483755431 -licenseType: Pro PluginImporter: - serializedVersion: 1 + externalObjects: {} + serializedVersion: 2 iconMap: {} executionOrder: {} + defineConstraints: [] isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 platformData: - Any: + - first: + Any: + second: enabled: 0 settings: {} - Editor: + - first: + Editor: Editor + second: enabled: 1 settings: DefaultValueInitialized: true - WindowsStoreApps: + - first: + Windows Store Apps: WindowsStoreApps + second: enabled: 0 settings: CPU: AnyCPU diff --git a/ZipFile/README.md b/Editor/ZipFile/README.md similarity index 100% rename from ZipFile/README.md rename to Editor/ZipFile/README.md diff --git a/ZipFile/README.md.meta b/Editor/ZipFile/README.md.meta similarity index 100% rename from ZipFile/README.md.meta rename to Editor/ZipFile/README.md.meta diff --git a/ZipFile/Editor/ZipFileOperation.cs b/Editor/ZipFile/ZipFileOperation.cs similarity index 100% rename from ZipFile/Editor/ZipFileOperation.cs rename to Editor/ZipFile/ZipFileOperation.cs diff --git a/ZipFile/Editor/ZipFileOperation.cs.meta b/Editor/ZipFile/ZipFileOperation.cs.meta similarity index 100% rename from ZipFile/Editor/ZipFileOperation.cs.meta rename to Editor/ZipFile/ZipFileOperation.cs.meta diff --git a/FileUtility/Editor.meta b/FileUtility/Editor.meta deleted file mode 100644 index 5c89fe5..0000000 --- a/FileUtility/Editor.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: 6d800d3142e46c84f94422e9e2e76055 -folderAsset: yes -timeCreated: 1484084208 -licenseType: Pro -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/ItchUploader/Editor.meta b/ItchUploader/Editor.meta deleted file mode 100644 index 3d4a651..0000000 --- a/ItchUploader/Editor.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: cd74748590f989b43b9a07971630acaf -folderAsset: yes -timeCreated: 1483567647 -licenseType: Pro -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/OverrideDefines/Editor.meta b/OverrideDefines/Editor.meta deleted file mode 100644 index 49a9646..0000000 --- a/OverrideDefines/Editor.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: c9a187e0522587643af03b2eba8d96b6 -folderAsset: yes -timeCreated: 1491855404 -licenseType: Pro -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/README.md b/README.md index e81795d..c7f1de7 100644 --- a/README.md +++ b/README.md @@ -1,50 +1,80 @@ # SuperUnityBuild - BuildActions + +[![openupm](https://img.shields.io/npm/v/com.github.superunitybuild.buildactions?label=openupm®istry_uri=https://package.openupm.com)][openupm-package] + > BuildActions for use with the [SuperUnityBuild][buildtool] build automation tool. +![Logo](https://raw.githubusercontent.com/superunitybuild/buildtool/gh-pages/Cover.png) + BuildActions are one of the key components that make the [SuperUnityBuild][buildtool] build automation tool flexible and powerful. Each one extends the capabilities of SuperUnityBuild and can be easily setup and customized to suit your needs, and if there's some other specialized functionality that your project needs, you can simply write your own BuildActions and integrate them into the build process. This repository is intended to serve as an ever expanding library of useful BuildActions as more of them are created. ## Basic Usage +### Installation + If you don't already have SuperUnityBuild, get it from its [GitHub repository][buildtool]. Then, do one of the following: -* [Download][download] this project and copy the folder for the tools you want into your project's Assets directory. -* Make this repository a git submodule within your project's Assets directory. +- [Download][download] this project and copy the folder for the tools you want into your project's Assets directory. +- Make this repository a git submodule within your project's Assets directory. -Refer to the [SuperUnityBuild wiki][unitybuild-wiki] for basic information on how to setup, use, and create your own BuildActions. For specific details on one of the BuildActions featured here, refer to the README in its directory. +### Setup + +Refer to the [SuperUnityBuild wiki][wiki] for basic information on how to setup, use, and create your own BuildActions. For specific details on one of the BuildActions featured here, refer to the README in its directory. ## Tools -* [**AssetBundle Builder**][assetbundle] - AssetBundle building and file management. -* [**Script Runner**][scriptrunner] - Run batch/script files or other external applications. -* [**Zip File Utility**][zipfile] - Compress builds and other files into ZIP file format. -* [**File Operations Utility**][fileutil] - Perform basic file/folder operations like copy, move, and delete. -* [**itch.io Uploader**][itchuploader] - Upload builds to [itch.io](https://itch.io/). -* [**Define Modifier**][overridedefines] - Add/remove script defines. +- [**AssetBundle Builder**][assetbundle] - AssetBundle building and file management. +- [**Script Runner**][scriptrunner] - Run batch/script files or other external applications. +- [**Zip File Utility**][zipfile] - Compress builds and other files into ZIP file format. +- [**File Operations Utility**][fileutil] - Perform basic file/folder operations like copy, move, and delete. +- [**itch.io Uploader**][itchuploader] - Upload builds to [itch.io](https://itch.io/). +- [**Override Defines**][overridedefines] - Add/remove script defines. +- [**Package Management**][packagemanagement] - Enable per-build Unity Package Manager settings. +- [**Per-Build Player Settings**][perbuildplayersettings] - Enable per-build Player settings. +- [**XR Settings**][xrsettings] - Enable per-build legacy Unity XR settings. +- [**XR Plug-in Management**][xrpluginmanagement] - Enable per-build [Unity XR Plug-in Management](https://docs.unity3d.com/Packages/com.unity.xr.management@latest) settings. ## Contributing + Bug reports, feature requests, and pull requests are welcome and appreciated. ## Credits -* **Chase Pettit** - [github](https://github.com/Chaser324), [twitter](http://twitter.com/chasepettit) -## License -All code in this repository ([unity-build-actions](https://github.com/superunitybuild/buildactions)) is made freely available under the MIT license. This essentially means you're free to use it however you like as long as you provide attribution. +### Creator -Zip File Utility includes a pre-compiled DotNetZip library which is licensed under the Ms-PL. See [DotNetZip's repository](https://dotnetzip.codeplex.com/) for more info. +- **Chase Pettit** - [GitHub](https://github.com/Chaser324), [Twitter](http://twitter.com/chasepettit) + +### Maintainer + +- **Robin North** - [GitHub](https://github.com/robinnorth) +### Contributors +You can see a complete list of contributors at [https://github.com/superunitybuild/buildactions/graphs/contributors][contributors] +## License + +All code in this repository ([buildactions](https://github.com/superunitybuild/buildactions)) is made freely available under the MIT license. This essentially means you're free to use it however you like as long as you provide attribution. +Zip File Utility includes a pre-compiled DotNetZip library which is licensed under the Ms-PL. See [DotNetZip's repository](https://dotnetzip.codeplex.com/) for more info. [download]: https://github.com/superunitybuild/buildactions/archive/master.zip -[buildtool]: https://github.com/Chaser324/unity-build -[unitybuild-wiki]: https://github.com/Chaser324/unity-build/wiki/Build-Actions - -[assetbundle]: https://github.com/superunitybuild/buildactions/tree/master/UnityBuild-AssetBundle -[fileutil]: https://github.com/superunitybuild/buildactions/tree/master/UnityBuild-FileUtility -[scriptrunner]: https://github.com/superunitybuild/buildactions/tree/master/UnityBuild-ScriptRunner -[zipfile]: https://github.com/superunitybuild/buildactions/tree/master/UnityBuild-ZipFile -[itchuploader]: https://github.com/superunitybuild/buildactions/tree/master/UnityBuild-ItchUploader -[overridedefines]: https://github.com/superunitybuild/buildactions/tree/master/UnityBuild-OverrideDefines +[contributors]: https://github.com/superunitybuild/buildactions/graphs/contributors +[release]: https://github.com/superunitybuild/buildactions/releases +[buildtool]: https://github.com/superunitybuild/buildtool +[buildactions]: https://github.com/superunitybuild/buildactions +[wiki]: https://github.com/superunitybuild/buildtool/wiki/Build-Actions +[openupm-package]: https://openupm.com/packages/com.github.superunitybuild.buildactions/ +[unity-forums-thread]: https://forum.unity3d.com/threads/super-unity-build-automated-build-tool-and-framework.471114/ +[assetbundle]: https://github.com/superunitybuild/buildactions/tree/master/Editor/AssetBundle +[fileutil]: https://github.com/superunitybuild/buildactions/tree/master/Editor/FileUtility +[scriptrunner]: https://github.com/superunitybuild/buildactions/tree/master/Editor/ScriptRunner +[zipfile]: https://github.com/superunitybuild/buildactions/tree/master/Editor/ZipFile +[itchuploader]: https://github.com/superunitybuild/buildactions/tree/master/Editor/ItchUploader +[overridedefines]: https://github.com/superunitybuild/buildactions/tree/master/Editor/OverrideDefines +[packagemanagement]: https://github.com/superunitybuild/buildactions/tree/master/Editor/PackageManagement +[perbuildplayersettings]: https://github.com/superunitybuild/buildactions/tree/master/Editor/PerBuildPlayerSettings +[xrpluginmanagement]: https://github.com/superunitybuild/buildactions/tree/master/Editor/XRPluginManagement +[xrsettings]: https://github.com/superunitybuild/buildactions/tree/master/Editor/XRSettings diff --git a/ScriptRunner/Editor.meta b/ScriptRunner/Editor.meta deleted file mode 100644 index b4052ba..0000000 --- a/ScriptRunner/Editor.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: d7977bd259a27564b82c7152659db9a7 -folderAsset: yes -timeCreated: 1484084226 -licenseType: Pro -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/XRSettings/README.md b/XRSettings/README.md deleted file mode 100644 index 6c15e4e..0000000 --- a/XRSettings/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# SuperUnityBuild - XR Settings -> Modify player XR settings \ No newline at end of file diff --git a/ZipFile/Editor.meta b/ZipFile/Editor.meta deleted file mode 100644 index a13f38c..0000000 --- a/ZipFile/Editor.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: 5b36d3c7f52545648a445ed554c706e9 -folderAsset: yes -timeCreated: 1483567653 -licenseType: Pro -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/package.json b/package.json new file mode 100644 index 0000000..2cc0927 --- /dev/null +++ b/package.json @@ -0,0 +1,11 @@ +{ + "name": "com.github.superunitybuild.buildactions", + "displayName": "SuperUnityBuild BuildActions", + "version": "1.0.0", + "unity": "2018.1", + "description": "BuildActions are one of the key components that make the SuperUnityBuild build automation tool flexible and powerful. Each one extends the capabilities of SuperUnityBuild and can be easily setup and customized to suit your needs", + "type": "library", + "dependencies": { + "com.github.superunitybuild.buildtool": "1.0.0" + } +} diff --git a/XRSettings/Editor.meta b/package.json.meta similarity index 57% rename from XRSettings/Editor.meta rename to package.json.meta index e68a5b4..d58a2c8 100644 --- a/XRSettings/Editor.meta +++ b/package.json.meta @@ -1,7 +1,6 @@ fileFormatVersion: 2 -guid: 4d09cc5e8d0808c47b3e0ce971f6c55b -folderAsset: yes -DefaultImporter: +guid: e009fd4afff97db4f9811f0d88f9d953 +PackageManifestImporter: externalObjects: {} userData: assetBundleName: From 199058a1ce4d2f76c7ef7cafdc6e9429e50fa35e Mon Sep 17 00:00:00 2001 From: Robin North Date: Thu, 15 Apr 2021 13:36:19 +0100 Subject: [PATCH 15/53] Support all versions of Unity XR Plug-in Management in `XRPluginManagement` action --- CHANGELOG.md | 4 ++++ Editor/SuperUnityBuild.BuildActions.Editor.asmdef | 5 +++++ Editor/XRPluginManagement/XRPluginManagement.cs | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5bc26d2..18b60eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,5 +16,9 @@ This release includes all [previous commits][1.0.0] to the project, plus: - Added UPM support. - First tagged version. +### Changed + +- Support all versions of Unity XR Plug-in Management in `XRPluginManagement` action. + [unreleased]: https://github.com/superunitybuild/buildactions/compare/v1.0.0...HEAD [1.0.0]: https://github.com/superunitybuild/buildactions/compare/5951d33...v1.0.0 diff --git a/Editor/SuperUnityBuild.BuildActions.Editor.asmdef b/Editor/SuperUnityBuild.BuildActions.Editor.asmdef index a857334..731a31e 100644 --- a/Editor/SuperUnityBuild.BuildActions.Editor.asmdef +++ b/Editor/SuperUnityBuild.BuildActions.Editor.asmdef @@ -20,6 +20,11 @@ "name": "com.unity.xr.management", "expression": "", "define": "UNITY_XR_MANAGEMENT" + }, + { + "name": "com.unity.xr.management", + "expression": "4.0.0", + "define": "UNITY_XR_MANAGEMENT_400_OR_NEWER" } ], "noEngineReferences": false diff --git a/Editor/XRPluginManagement/XRPluginManagement.cs b/Editor/XRPluginManagement/XRPluginManagement.cs index 6585e69..8e460cd 100644 --- a/Editor/XRPluginManagement/XRPluginManagement.cs +++ b/Editor/XRPluginManagement/XRPluginManagement.cs @@ -22,7 +22,11 @@ public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform generalSettings.InitManagerOnStart = InitializeXROnStartup; +#if UNITY_XR_MANAGEMENT_400_OR_NEWER settingsManager.TrySetLoaders(XRPlugins); +#else + settingsManager.loaders = XRPlugins; +#endif } } } From b00b049f2b03d2a4e3418f51369dd61bf64b494e Mon Sep 17 00:00:00 2001 From: Robin North Date: Thu, 15 Apr 2021 17:40:57 +0100 Subject: [PATCH 16/53] Fix merge error in `ItchUploader` action --- Editor/ItchUploader/UploadItch.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Editor/ItchUploader/UploadItch.cs b/Editor/ItchUploader/UploadItch.cs index 9852dc7..c8abc70 100644 --- a/Editor/ItchUploader/UploadItch.cs +++ b/Editor/ItchUploader/UploadItch.cs @@ -18,7 +18,7 @@ public class UploadItch : BuildAction, IPostBuildPerPlatformAction private const string ARCHITECTURE_X64 = "x64"; private const string ARCHITECTURE_UNIVERSAL = "universal"; - [FilePath(false, true, "Path to butler.exe")] + [BuildTool.FilePath(false, true, "Path to butler.exe")] public string pathToButlerExe = ""; public string nameOfItchUser = ""; public string nameOfItchGame = ""; From 7fd78104c2172d80b7a44f6b844506ccc31ff4aa Mon Sep 17 00:00:00 2001 From: Robin North Date: Thu, 15 Apr 2021 17:47:12 +0100 Subject: [PATCH 17/53] =?UTF-8?q?v1.0.0=20=F0=9F=9A=80=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 8 ++++++++ README.md | 11 +++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 18b60eb..42f2695 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,10 +15,18 @@ This release includes all [previous commits][1.0.0] to the project, plus: - Added UPM support. - First tagged version. +- Support use of `$VERSION` and `$BUILD` replacement tokens in single-run action paths in `FileUtility` action. +- Improved error reporting in `FileUtility` action. +- Added `$BASEPATH` to File and Folder path substitutions in `FileUtility` action. [PR #18](https://github.com/superunitybuild/buildactions/pull/18) +- Added input to customize channel names to `ItchUploader` action [PR #14](https://github.com/superunitybuild/buildactions/pull/14) ### Changed - Support all versions of Unity XR Plug-in Management in `XRPluginManagement` action. +### Fixed + +- `OverrideDefines` action no longer ignore pre build defines. [PR #17](https://github.com/superunitybuild/buildactions/pull/17) + [unreleased]: https://github.com/superunitybuild/buildactions/compare/v1.0.0...HEAD [1.0.0]: https://github.com/superunitybuild/buildactions/compare/5951d33...v1.0.0 diff --git a/README.md b/README.md index c7f1de7..0f7c63d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# SuperUnityBuild - BuildActions +# SuperUnityBuild BuildActions [![openupm](https://img.shields.io/npm/v/com.github.superunitybuild.buildactions?label=openupm®istry_uri=https://package.openupm.com)][openupm-package] @@ -6,6 +6,8 @@ ![Logo](https://raw.githubusercontent.com/superunitybuild/buildtool/gh-pages/Cover.png) +[Unity Forums Thread][unity-forums-thread] | [Documentation Wiki][wiki] | [OpenUPM package][openupm-package] + BuildActions are one of the key components that make the [SuperUnityBuild][buildtool] build automation tool flexible and powerful. Each one extends the capabilities of SuperUnityBuild and can be easily setup and customized to suit your needs, and if there's some other specialized functionality that your project needs, you can simply write your own BuildActions and integrate them into the build process. This repository is intended to serve as an ever expanding library of useful BuildActions as more of them are created. @@ -14,10 +16,11 @@ This repository is intended to serve as an ever expanding library of useful Buil ### Installation -If you don't already have SuperUnityBuild, get it from its [GitHub repository][buildtool]. Then, do one of the following: +BuildActions requires SuperUnityBuild to be [installed](https://github.com/superunitybuild/buildtool#installation) in your project. + +Official releases of BuildActions can be installed via [Unity Package Manager](https://docs.unity3d.com/Packages/com.unity.package-manager-ui@latest/index.html) from the [OpenUPM](https://openupm.com) package registry. See [https://openupm.com/packages/com.github.superunitybuild.buildactions/][openupm-package] for installation options. -- [Download][download] this project and copy the folder for the tools you want into your project's Assets directory. -- Make this repository a git submodule within your project's Assets directory. +You can also [download the source zip][download] of this repository and extract its contents into your Unity project's `Packages` directory to install BuildActions as an embedded package. ### Setup From 377f75b9f5fff3bef1a1231a55d189ab531a98bd Mon Sep 17 00:00:00 2001 From: Robin North Date: Mon, 19 Apr 2021 12:07:53 +0100 Subject: [PATCH 18/53] Disable `XRSettings` build action when XR Plug-in Management package is installed --- CHANGELOG.md | 6 +++++- Editor/XRSettings/XRSettings.cs | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 42f2695..07defb9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - +## [Unreleased] + +### Changed + +- Disable `XRSettings` build action when XR Plug-in Management package is installed. ## [1.0.0] - 2021-04-15 diff --git a/Editor/XRSettings/XRSettings.cs b/Editor/XRSettings/XRSettings.cs index 5f16f2d..4e77b95 100644 --- a/Editor/XRSettings/XRSettings.cs +++ b/Editor/XRSettings/XRSettings.cs @@ -2,7 +2,7 @@ #define SUPPORTS_OCULUS_V2_SIGNING #endif -#if !UNITY_2020_2_OR_NEWER +#if !UNITY_2020_2_OR_NEWER && !UNITY_XR_MANAGEMENT using System; using System.Collections.Generic; using SuperUnityBuild.BuildTool; From d34f05436bc734eb4f4decc05a75b9b8b5943732 Mon Sep 17 00:00:00 2001 From: Robin North Date: Mon, 19 Apr 2021 12:28:18 +0100 Subject: [PATCH 19/53] Remove pre-Unity 2018.1 code --- CHANGELOG.md | 1 + Editor/AssetBundle/BuildAssetBundles.cs | 12 ++---------- Editor/XRSettings/XRSettings.cs | 2 +- 3 files changed, 4 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 07defb9..d75562a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Removed pre-Unity 2018.1 code. - Disable `XRSettings` build action when XR Plug-in Management package is installed. ## [1.0.0] - 2021-04-15 diff --git a/Editor/AssetBundle/BuildAssetBundles.cs b/Editor/AssetBundle/BuildAssetBundles.cs index 2f9029d..ae23526 100644 --- a/Editor/AssetBundle/BuildAssetBundles.cs +++ b/Editor/AssetBundle/BuildAssetBundles.cs @@ -1,6 +1,6 @@ -using System.IO; +using SuperUnityBuild.BuildTool; +using System.IO; using System.Text; -using SuperUnityBuild.BuildTool; using UnityEditor; using UnityEngine; @@ -15,11 +15,7 @@ public sealed class BuildAssetBundles : BuildAction, IPreBuildPerPlatformAction public string innerBuildPath = Path.Combine("$PLATFORM", "$ARCHITECTURE"); -#if UNITY_5_3 || UNITY_5_4_OR_NEWER public BuildAssetBundleOptions options = BuildAssetBundleOptions.ChunkBasedCompression; -#else - public BuildAssetBundleOptions options = BuildAssetBundleOptions.None; -#endif #endregion @@ -56,11 +52,7 @@ protected override void DrawProperties(SerializedObject obj) { EditorGUILayout.PropertyField(obj.FindProperty("baseBuildPath")); EditorGUILayout.PropertyField(obj.FindProperty("innerBuildPath")); -#if UNITY_2017_3_OR_NEWER options = (BuildAssetBundleOptions)EditorGUILayout.EnumFlagsField("Options", options); -#else - options = (BuildAssetBundleOptions)((int)(BuildAssetBundleOptions)EditorGUILayout.EnumMaskField("Options", (BuildAssetBundleOptions)((int)(options) << 1)) >> 1); -#endif if (GUILayout.Button("Run Now", GUILayout.ExpandWidth(true))) { diff --git a/Editor/XRSettings/XRSettings.cs b/Editor/XRSettings/XRSettings.cs index 4e77b95..c2bbc04 100644 --- a/Editor/XRSettings/XRSettings.cs +++ b/Editor/XRSettings/XRSettings.cs @@ -1,4 +1,4 @@ -#if UNITY_2017_4 || UNITY_2018_4 || UNITY_2019_2_OR_NEWER +#if UNITY_2018_4 || UNITY_2019_2_OR_NEWER #define SUPPORTS_OCULUS_V2_SIGNING #endif From 70cf2335b2222b88eee1816d50acab1eb822a7fd Mon Sep 17 00:00:00 2001 From: Robin North Date: Tue, 20 Apr 2021 10:01:57 +0100 Subject: [PATCH 20/53] Hide unnecessary utility define when `XRSettings` action is disabled --- Editor/XRSettings/XRSettings.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Editor/XRSettings/XRSettings.cs b/Editor/XRSettings/XRSettings.cs index c2bbc04..5e8b5aa 100644 --- a/Editor/XRSettings/XRSettings.cs +++ b/Editor/XRSettings/XRSettings.cs @@ -1,8 +1,8 @@ +#if !UNITY_2020_2_OR_NEWER && !UNITY_XR_MANAGEMENT #if UNITY_2018_4 || UNITY_2019_2_OR_NEWER #define SUPPORTS_OCULUS_V2_SIGNING #endif -#if !UNITY_2020_2_OR_NEWER && !UNITY_XR_MANAGEMENT using System; using System.Collections.Generic; using SuperUnityBuild.BuildTool; From f1c15e37b93e6080a7751d8a29aea5fef4b6f472 Mon Sep 17 00:00:00 2001 From: Robin North Date: Tue, 20 Apr 2021 10:24:58 +0100 Subject: [PATCH 21/53] =?UTF-8?q?v1.1.0=20=F0=9F=9A=80=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 7 +++++-- package.json | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d75562a..0ecb8b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,9 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] + + +## [1.1.0] - 2021-04-20 ### Changed @@ -33,5 +35,6 @@ This release includes all [previous commits][1.0.0] to the project, plus: - `OverrideDefines` action no longer ignore pre build defines. [PR #17](https://github.com/superunitybuild/buildactions/pull/17) -[unreleased]: https://github.com/superunitybuild/buildactions/compare/v1.0.0...HEAD +[unreleased]: https://github.com/superunitybuild/buildactions/compare/v1.1.0...HEAD +[1.1.0]: https://github.com/superunitybuild/buildactions/compare/v1.0.0...v1.1.0 [1.0.0]: https://github.com/superunitybuild/buildactions/compare/5951d33...v1.0.0 diff --git a/package.json b/package.json index 2cc0927..fa78586 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "com.github.superunitybuild.buildactions", "displayName": "SuperUnityBuild BuildActions", - "version": "1.0.0", + "version": "1.1.0", "unity": "2018.1", "description": "BuildActions are one of the key components that make the SuperUnityBuild build automation tool flexible and powerful. Each one extends the capabilities of SuperUnityBuild and can be easily setup and customized to suit your needs", "type": "library", From e816fd35005a8e0db759208fc745ad4600f70f9b Mon Sep 17 00:00:00 2001 From: Robin North Date: Thu, 29 Apr 2021 13:02:19 +0100 Subject: [PATCH 22/53] Added `PerBuildAudioSettings` build action --- CHANGELOG.md | 6 ++- Editor/PerBuildAudioSettings.meta | 8 ++++ .../PerBuildAudioSettings.cs | 43 +++++++++++++++++++ .../PerBuildAudioSettings.cs.meta | 11 +++++ Editor/PerBuildAudioSettings/README.md | 3 ++ Editor/PerBuildAudioSettings/README.md.meta | 7 +++ 6 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 Editor/PerBuildAudioSettings.meta create mode 100644 Editor/PerBuildAudioSettings/PerBuildAudioSettings.cs create mode 100644 Editor/PerBuildAudioSettings/PerBuildAudioSettings.cs.meta create mode 100644 Editor/PerBuildAudioSettings/README.md create mode 100644 Editor/PerBuildAudioSettings/README.md.meta diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ecb8b5..c39816d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - +## [Unreleased] + +### Added + +- Added `PerBuildAudioSettings` build action. ## [1.1.0] - 2021-04-20 diff --git a/Editor/PerBuildAudioSettings.meta b/Editor/PerBuildAudioSettings.meta new file mode 100644 index 0000000..0a5fd7c --- /dev/null +++ b/Editor/PerBuildAudioSettings.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 47cc0554148cb444389b0b3cb29e59e1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/PerBuildAudioSettings/PerBuildAudioSettings.cs b/Editor/PerBuildAudioSettings/PerBuildAudioSettings.cs new file mode 100644 index 0000000..7b24e43 --- /dev/null +++ b/Editor/PerBuildAudioSettings/PerBuildAudioSettings.cs @@ -0,0 +1,43 @@ +using SuperUnityBuild.BuildTool; +using System; +using System.Linq; +using UnityEditor; +using UnityEngine; + +namespace SuperUnityBuild.BuildActions +{ + public class PerBuildAudioSettings : BuildAction, IPreBuildPerPlatformAction, IPostBuildPerPlatformAction + { + [Tooltip("Spatializer plugin to use for this build")] public string SpatializerPlugin = ""; + + public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) + { + // Set spatializer plugin + AudioSettings.SetSpatializerPluginName(SpatializerPlugin); + } + + private int index = 0; + private string[] spatializerPluginNames; + + private void OnEnable() + { + spatializerPluginNames = AudioSettings.GetSpatializerPluginNames(); + spatializerPluginNames = spatializerPluginNames.Prepend("None").ToArray(); + } + + protected override void DrawProperty(SerializedProperty prop) + { + switch (prop.name) + { + case "SpatializerPlugin": + index = EditorGUILayout.Popup(prop.displayName, index, spatializerPluginNames); + prop.stringValue = index == 0 ? "" : spatializerPluginNames[index]; + break; + + default: + base.DrawProperty(prop); + break; + } + } + } +} diff --git a/Editor/PerBuildAudioSettings/PerBuildAudioSettings.cs.meta b/Editor/PerBuildAudioSettings/PerBuildAudioSettings.cs.meta new file mode 100644 index 0000000..97d6a68 --- /dev/null +++ b/Editor/PerBuildAudioSettings/PerBuildAudioSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6c5380d77f3977b4b9d57468c981ecf0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/PerBuildAudioSettings/README.md b/Editor/PerBuildAudioSettings/README.md new file mode 100644 index 0000000..0dee549 --- /dev/null +++ b/Editor/PerBuildAudioSettings/README.md @@ -0,0 +1,3 @@ +# SuperUnityBuild - Per-build Audio Settings + +> Enable per-build Audio settings diff --git a/Editor/PerBuildAudioSettings/README.md.meta b/Editor/PerBuildAudioSettings/README.md.meta new file mode 100644 index 0000000..c76c190 --- /dev/null +++ b/Editor/PerBuildAudioSettings/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 364c15a17c374344eb5cf45a4e088acc +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: From 2e566a63561ead846b17f191867badb8dbfb5d0d Mon Sep 17 00:00:00 2001 From: Robin North Date: Thu, 29 Apr 2021 15:41:26 +0100 Subject: [PATCH 23/53] =?UTF-8?q?v1.2.0=20=F0=9F=9A=80=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 7 +++++-- package.json | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c39816d..dc7d9d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,9 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] + + +## [1.2.0] - 2021-04-29 ### Added @@ -39,6 +41,7 @@ This release includes all [previous commits][1.0.0] to the project, plus: - `OverrideDefines` action no longer ignore pre build defines. [PR #17](https://github.com/superunitybuild/buildactions/pull/17) -[unreleased]: https://github.com/superunitybuild/buildactions/compare/v1.1.0...HEAD +[unreleased]: https://github.com/superunitybuild/buildactions/compare/v1.2.0...HEAD +[1.2.0]: https://github.com/superunitybuild/buildactions/compare/v1.1.0...v1.2.0 [1.1.0]: https://github.com/superunitybuild/buildactions/compare/v1.0.0...v1.1.0 [1.0.0]: https://github.com/superunitybuild/buildactions/compare/5951d33...v1.0.0 diff --git a/package.json b/package.json index fa78586..c1f295a 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,11 @@ { "name": "com.github.superunitybuild.buildactions", "displayName": "SuperUnityBuild BuildActions", - "version": "1.1.0", + "version": "1.2.0", "unity": "2018.1", "description": "BuildActions are one of the key components that make the SuperUnityBuild build automation tool flexible and powerful. Each one extends the capabilities of SuperUnityBuild and can be easily setup and customized to suit your needs", "type": "library", "dependencies": { - "com.github.superunitybuild.buildtool": "1.0.0" + "com.github.superunitybuild.buildtool": "1.1.0" } } From 410eb69dc2db938b41b6a40256bf6f23b7a8c28c Mon Sep 17 00:00:00 2001 From: Robin North Date: Mon, 10 May 2021 13:51:56 +0100 Subject: [PATCH 24/53] Updated `FileUtility` and `ItchUploader` build actions to use new `BuildSettings.productParameters.buildVersion` property - Replaces usage of deprecated `BuildSettings.productParameters.lastGeneratedVersion` property --- CHANGELOG.md | 6 +++++- Editor/FileUtility/FileUtility.cs | 2 +- Editor/ItchUploader/UploadItch.cs | 2 +- package.json | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dc7d9d3..79929c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - +## [Unreleased] + +### Changed + +- Updated `FileUtility` and `ItchUploader` build actions to use new `BuildSettings.productParameters.buildVersion` property that deprecated `BuildSettings.productParameters.lastGeneratedVersion`. ## [1.2.0] - 2021-04-29 diff --git a/Editor/FileUtility/FileUtility.cs b/Editor/FileUtility/FileUtility.cs index b225090..00b00f0 100644 --- a/Editor/FileUtility/FileUtility.cs +++ b/Editor/FileUtility/FileUtility.cs @@ -23,7 +23,7 @@ public static string ResolvePath(string prototype) { StringBuilder sb = new StringBuilder(prototype); - sb.Replace("$VERSION", BuildProject.SanitizeFolderName(BuildSettings.productParameters.lastGeneratedVersion)); + sb.Replace("$VERSION", BuildProject.SanitizeFolderName(BuildSettings.productParameters.buildVersion)); sb.Replace("$BUILD", BuildSettings.productParameters.buildCounter.ToString()); return sb.ToString(); diff --git a/Editor/ItchUploader/UploadItch.cs b/Editor/ItchUploader/UploadItch.cs index c8abc70..7b96052 100644 --- a/Editor/ItchUploader/UploadItch.cs +++ b/Editor/ItchUploader/UploadItch.cs @@ -65,7 +65,7 @@ public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform if (useGeneratedBuildVersion) { // Append generated versions string. - scriptArguments.Append(string.Format("--userversion \"{0}\" ", BuildSettings.productParameters.lastGeneratedVersion)); + scriptArguments.Append(string.Format("--userversion \"{0}\" ", BuildSettings.productParameters.buildVersion)); } scriptArguments.Append("\"" + buildPath + "\"" + " " + nameOfItchUser + "/" + nameOfItchGame + ":"); diff --git a/package.json b/package.json index c1f295a..ccaed52 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,6 @@ "description": "BuildActions are one of the key components that make the SuperUnityBuild build automation tool flexible and powerful. Each one extends the capabilities of SuperUnityBuild and can be easily setup and customized to suit your needs", "type": "library", "dependencies": { - "com.github.superunitybuild.buildtool": "1.1.0" + "com.github.superunitybuild.buildtool": "1.2.0" } } From 69a21cb64ea012d9f48124d8552b38c850a04cc2 Mon Sep 17 00:00:00 2001 From: Robin North Date: Mon, 10 May 2021 13:53:06 +0100 Subject: [PATCH 25/53] =?UTF-8?q?v1.3.0=20=F0=9F=9A=80=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 7 +++++-- package.json | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 79929c9..cbac612 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,9 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] + + +## [1.3.0] - 2021-05-10 ### Changed @@ -45,7 +47,8 @@ This release includes all [previous commits][1.0.0] to the project, plus: - `OverrideDefines` action no longer ignore pre build defines. [PR #17](https://github.com/superunitybuild/buildactions/pull/17) -[unreleased]: https://github.com/superunitybuild/buildactions/compare/v1.2.0...HEAD +[unreleased]: https://github.com/superunitybuild/buildactions/compare/v1.3.0...HEAD +[1.3.0]: https://github.com/superunitybuild/buildactions/compare/v1.2.0...v1.3.0 [1.2.0]: https://github.com/superunitybuild/buildactions/compare/v1.1.0...v1.2.0 [1.1.0]: https://github.com/superunitybuild/buildactions/compare/v1.0.0...v1.1.0 [1.0.0]: https://github.com/superunitybuild/buildactions/compare/5951d33...v1.0.0 diff --git a/package.json b/package.json index ccaed52..a3deae9 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "com.github.superunitybuild.buildactions", "displayName": "SuperUnityBuild BuildActions", - "version": "1.2.0", + "version": "1.3.0", "unity": "2018.1", "description": "BuildActions are one of the key components that make the SuperUnityBuild build automation tool flexible and powerful. Each one extends the capabilities of SuperUnityBuild and can be easily setup and customized to suit your needs", "type": "library", From d5d306ca5ce97d180f10685752a382482014dc85 Mon Sep 17 00:00:00 2001 From: Robin North Date: Tue, 11 May 2021 12:08:29 +0100 Subject: [PATCH 26/53] Increased minimum supported Unity version to 2019.1 --- CHANGELOG.md | 6 +++++- package.json | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cbac612..31e6ac6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - +## [Unreleased] + +### Changed + +- Increased minimum supported Unity version to 2019.1. ## [1.3.0] - 2021-05-10 diff --git a/package.json b/package.json index a3deae9..7c00651 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "com.github.superunitybuild.buildactions", "displayName": "SuperUnityBuild BuildActions", "version": "1.3.0", - "unity": "2018.1", + "unity": "2019.1", "description": "BuildActions are one of the key components that make the SuperUnityBuild build automation tool flexible and powerful. Each one extends the capabilities of SuperUnityBuild and can be easily setup and customized to suit your needs", "type": "library", "dependencies": { From 9025f42d2ed58493ca616e971d07571cd050579d Mon Sep 17 00:00:00 2001 From: Robin North Date: Thu, 13 May 2021 11:00:29 +0100 Subject: [PATCH 27/53] =?UTF-8?q?v2.0.0=20=F0=9F=9A=80=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 7 +++++-- package.json | 6 +++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 31e6ac6..bb77105 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,9 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] + + +## [2.0.0] - 2021-05-13 ### Changed @@ -51,7 +53,8 @@ This release includes all [previous commits][1.0.0] to the project, plus: - `OverrideDefines` action no longer ignore pre build defines. [PR #17](https://github.com/superunitybuild/buildactions/pull/17) -[unreleased]: https://github.com/superunitybuild/buildactions/compare/v1.3.0...HEAD +[unreleased]: https://github.com/superunitybuild/buildactions/compare/v2.0.0...HEAD +[2.0.0]: https://github.com/superunitybuild/buildactions/compare/v1.3.0...v2.0.0 [1.3.0]: https://github.com/superunitybuild/buildactions/compare/v1.2.0...v1.3.0 [1.2.0]: https://github.com/superunitybuild/buildactions/compare/v1.1.0...v1.2.0 [1.1.0]: https://github.com/superunitybuild/buildactions/compare/v1.0.0...v1.1.0 diff --git a/package.json b/package.json index 7c00651..1487c09 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,11 @@ { "name": "com.github.superunitybuild.buildactions", "displayName": "SuperUnityBuild BuildActions", - "version": "1.3.0", + "version": "2.0.0", "unity": "2019.1", "description": "BuildActions are one of the key components that make the SuperUnityBuild build automation tool flexible and powerful. Each one extends the capabilities of SuperUnityBuild and can be easily setup and customized to suit your needs", "type": "library", "dependencies": { - "com.github.superunitybuild.buildtool": "1.2.0" + "com.github.superunitybuild.buildtool": "2.0.0" } -} +} \ No newline at end of file From 1e3ed18ebf962361f12b2f94c8521c38eaa0fd26 Mon Sep 17 00:00:00 2001 From: Robin North Date: Thu, 13 May 2021 11:24:13 +0100 Subject: [PATCH 28/53] Remove pre-Unity 2019.1 code --- Editor/XRSettings/XRSettings.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Editor/XRSettings/XRSettings.cs b/Editor/XRSettings/XRSettings.cs index 5e8b5aa..52ecb9f 100644 --- a/Editor/XRSettings/XRSettings.cs +++ b/Editor/XRSettings/XRSettings.cs @@ -1,11 +1,11 @@ #if !UNITY_2020_2_OR_NEWER && !UNITY_XR_MANAGEMENT -#if UNITY_2018_4 || UNITY_2019_2_OR_NEWER +#if UNITY_2019_2_OR_NEWER #define SUPPORTS_OCULUS_V2_SIGNING #endif +using SuperUnityBuild.BuildTool; using System; using System.Collections.Generic; -using SuperUnityBuild.BuildTool; using UnityEditor; using UnityEngine; From 7b8ac4fda0aa2d961af70136dab3f7cc317b15ee Mon Sep 17 00:00:00 2001 From: Robin North Date: Fri, 14 May 2021 15:34:14 +0100 Subject: [PATCH 29/53] Allow certain pre-build per-platform actions to optionally configure Editor --- CHANGELOG.md | 10 +++++++++- Editor/FileUtility/FileOperation.cs | 2 +- Editor/FileUtility/FolderOperation.cs | 2 +- Editor/OverrideDefines/OverrideDefines.cs | 2 +- Editor/PackageManagement/PackageManagement.cs | 4 ++-- Editor/PerBuildAudioSettings/PerBuildAudioSettings.cs | 2 +- .../PerBuildPlayerSettings/PerBuildPlayerSettings.cs | 4 ++-- Editor/ScriptRunner/ScriptRunner.cs | 6 +++--- Editor/XRPluginManagement/XRPluginManagement.cs | 2 +- Editor/XRSettings/XRSettings.cs | 2 +- 10 files changed, 22 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bb77105..f37ef8e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,15 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - +## [Unreleased] + +### Added + +- Allow certain pre-build per-platform actions to optionally configure Editor. + +### Changed + +- Removed pre-Unity 2019.1 code. ## [2.0.0] - 2021-05-13 diff --git a/Editor/FileUtility/FileOperation.cs b/Editor/FileUtility/FileOperation.cs index 2266e4c..d68166a 100644 --- a/Editor/FileUtility/FileOperation.cs +++ b/Editor/FileUtility/FileOperation.cs @@ -7,7 +7,7 @@ namespace SuperUnityBuild.BuildActions { using Operation = FileUtility.Operation; - public class FileOperation : BuildAction, IPreBuildAction, IPreBuildPerPlatformAction, IPostBuildAction, IPostBuildPerPlatformAction + public class FileOperation : BuildAction, IPreBuildAction, IPreBuildPerPlatformAction, IPostBuildAction, IPostBuildPerPlatformAction, IPreBuildPerPlatformActionCanConfigureEditor { [BuildTool.FilePath(false)] public string inputPath; diff --git a/Editor/FileUtility/FolderOperation.cs b/Editor/FileUtility/FolderOperation.cs index 4012a4a..4a30946 100644 --- a/Editor/FileUtility/FolderOperation.cs +++ b/Editor/FileUtility/FolderOperation.cs @@ -7,7 +7,7 @@ namespace SuperUnityBuild.BuildActions { using Operation = FileUtility.Operation; - public class FolderOperation : BuildAction, IPreBuildAction, IPreBuildPerPlatformAction, IPostBuildAction, IPostBuildPerPlatformAction + public class FolderOperation : BuildAction, IPreBuildAction, IPreBuildPerPlatformAction, IPostBuildAction, IPostBuildPerPlatformAction, IPreBuildPerPlatformActionCanConfigureEditor { [BuildTool.FilePath(true)] public string inputPath; diff --git a/Editor/OverrideDefines/OverrideDefines.cs b/Editor/OverrideDefines/OverrideDefines.cs index 8231fe7..b281d04 100644 --- a/Editor/OverrideDefines/OverrideDefines.cs +++ b/Editor/OverrideDefines/OverrideDefines.cs @@ -7,7 +7,7 @@ namespace SuperUnityBuild.BuildActions { - public class OverrideDefines : BuildAction, IPreBuildPerPlatformAction + public class OverrideDefines : BuildAction, IPreBuildPerPlatformAction, IPreBuildPerPlatformActionCanConfigureEditor { public string removeDefines; public string addDefines; diff --git a/Editor/PackageManagement/PackageManagement.cs b/Editor/PackageManagement/PackageManagement.cs index 6e5954f..a46a626 100644 --- a/Editor/PackageManagement/PackageManagement.cs +++ b/Editor/PackageManagement/PackageManagement.cs @@ -1,13 +1,13 @@ +using SuperUnityBuild.BuildTool; using System; using System.Collections.Generic; -using SuperUnityBuild.BuildTool; using UnityEditor; using UnityEditor.PackageManager; using UnityEditor.PackageManager.Requests; using UnityEngine; namespace SuperUnityBuild.BuildActions { - public class PackageManagement : BuildAction, IPreBuildAction, IPreBuildPerPlatformAction, IPostBuildAction, IPostBuildPerPlatformAction + public class PackageManagement : BuildAction, IPreBuildAction, IPreBuildPerPlatformAction, IPostBuildAction, IPostBuildPerPlatformAction, IPreBuildPerPlatformActionCanConfigureEditor { [Header("Package Settings")] [Tooltip("List of package IDs to add")] public List PackagesToAdd = new List(); diff --git a/Editor/PerBuildAudioSettings/PerBuildAudioSettings.cs b/Editor/PerBuildAudioSettings/PerBuildAudioSettings.cs index 7b24e43..6d8ceca 100644 --- a/Editor/PerBuildAudioSettings/PerBuildAudioSettings.cs +++ b/Editor/PerBuildAudioSettings/PerBuildAudioSettings.cs @@ -6,7 +6,7 @@ namespace SuperUnityBuild.BuildActions { - public class PerBuildAudioSettings : BuildAction, IPreBuildPerPlatformAction, IPostBuildPerPlatformAction + public class PerBuildAudioSettings : BuildAction, IPreBuildPerPlatformAction, IPostBuildPerPlatformAction, IPreBuildPerPlatformActionCanConfigureEditor { [Tooltip("Spatializer plugin to use for this build")] public string SpatializerPlugin = ""; diff --git a/Editor/PerBuildPlayerSettings/PerBuildPlayerSettings.cs b/Editor/PerBuildPlayerSettings/PerBuildPlayerSettings.cs index 7923c43..65d49b0 100644 --- a/Editor/PerBuildPlayerSettings/PerBuildPlayerSettings.cs +++ b/Editor/PerBuildPlayerSettings/PerBuildPlayerSettings.cs @@ -1,14 +1,14 @@ +using SuperUnityBuild.BuildTool; using System; using System.Collections.Generic; using System.Linq; -using SuperUnityBuild.BuildTool; using UnityEditor; using UnityEngine; using Object = UnityEngine.Object; namespace SuperUnityBuild.BuildActions { - public class PerBuildPlayerSettings : BuildAction, IPreBuildPerPlatformAction, IPostBuildPerPlatformAction + public class PerBuildPlayerSettings : BuildAction, IPreBuildPerPlatformAction, IPostBuildPerPlatformAction, IPreBuildPerPlatformActionCanConfigureEditor { [Header("Other Settings")] [Tooltip("Preloaded assets to set for this build")] public List PreloadedAssets = new List(); diff --git a/Editor/ScriptRunner/ScriptRunner.cs b/Editor/ScriptRunner/ScriptRunner.cs index 1f20056..c7d9d0a 100644 --- a/Editor/ScriptRunner/ScriptRunner.cs +++ b/Editor/ScriptRunner/ScriptRunner.cs @@ -1,11 +1,11 @@ -using System.Diagnostics; +using SuperUnityBuild.BuildTool; +using System.Diagnostics; using System.IO; -using SuperUnityBuild.BuildTool; using UnityEditor; namespace SuperUnityBuild.BuildActions { - public class ScriptRunner : BuildAction, IPreBuildAction, IPreBuildPerPlatformAction, IPostBuildAction, IPostBuildPerPlatformAction + public class ScriptRunner : BuildAction, IPreBuildAction, IPreBuildPerPlatformAction, IPostBuildAction, IPostBuildPerPlatformAction, IPreBuildPerPlatformActionCanConfigureEditor { [BuildTool.FilePath(false, true, "Select program/script to run.")] public string scriptPath = ""; diff --git a/Editor/XRPluginManagement/XRPluginManagement.cs b/Editor/XRPluginManagement/XRPluginManagement.cs index 8e460cd..9c9eb01 100644 --- a/Editor/XRPluginManagement/XRPluginManagement.cs +++ b/Editor/XRPluginManagement/XRPluginManagement.cs @@ -9,7 +9,7 @@ namespace SuperUnityBuild.BuildActions { - public class XRPluginManagement : BuildAction, IPreBuildPerPlatformAction, IPostBuildPerPlatformAction + public class XRPluginManagement : BuildAction, IPreBuildPerPlatformAction, IPostBuildPerPlatformAction, IPreBuildPerPlatformActionCanConfigureEditor { [Header("XR Settings")] [Tooltip("XR plugin loaders to use for this build")] public List XRPlugins = new List(); diff --git a/Editor/XRSettings/XRSettings.cs b/Editor/XRSettings/XRSettings.cs index 52ecb9f..d22d0e5 100644 --- a/Editor/XRSettings/XRSettings.cs +++ b/Editor/XRSettings/XRSettings.cs @@ -11,7 +11,7 @@ namespace SuperUnityBuild.BuildActions { - public class XRSettings : BuildAction, IPreBuildPerPlatformAction, IPostBuildPerPlatformAction + public class XRSettings : BuildAction, IPreBuildPerPlatformAction, IPostBuildPerPlatformAction, IPreBuildPerPlatformActionCanConfigureEditor { public enum SDK { From e7f2169057fd8264205646c6c0a93e3c200bcb63 Mon Sep 17 00:00:00 2001 From: Robin North Date: Tue, 24 Aug 2021 14:03:07 +0100 Subject: [PATCH 30/53] =?UTF-8?q?v2.1.0=20=F0=9F=9A=80=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 7 +++++-- package.json | 6 +++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f37ef8e..e8e7b95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,9 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] + + +## [2.1.0] - 2021-08-24 ### Added @@ -61,7 +63,8 @@ This release includes all [previous commits][1.0.0] to the project, plus: - `OverrideDefines` action no longer ignore pre build defines. [PR #17](https://github.com/superunitybuild/buildactions/pull/17) -[unreleased]: https://github.com/superunitybuild/buildactions/compare/v2.0.0...HEAD +[unreleased]: https://github.com/superunitybuild/buildactions/compare/v2.1.0...HEAD +[2.1.0]: https://github.com/superunitybuild/buildactions/compare/v2.0.0...v2.1.0 [2.0.0]: https://github.com/superunitybuild/buildactions/compare/v1.3.0...v2.0.0 [1.3.0]: https://github.com/superunitybuild/buildactions/compare/v1.2.0...v1.3.0 [1.2.0]: https://github.com/superunitybuild/buildactions/compare/v1.1.0...v1.2.0 diff --git a/package.json b/package.json index 1487c09..aeafb91 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,11 @@ { "name": "com.github.superunitybuild.buildactions", "displayName": "SuperUnityBuild BuildActions", - "version": "2.0.0", + "version": "2.1.0", "unity": "2019.1", "description": "BuildActions are one of the key components that make the SuperUnityBuild build automation tool flexible and powerful. Each one extends the capabilities of SuperUnityBuild and can be easily setup and customized to suit your needs", "type": "library", "dependencies": { - "com.github.superunitybuild.buildtool": "2.0.0" + "com.github.superunitybuild.buildtool": "2.1.0" } -} \ No newline at end of file +} From 99f01156611fbcf3fd1f3dfdc0dea70cca3dbda3 Mon Sep 17 00:00:00 2001 From: Robin North Date: Thu, 7 Oct 2021 10:03:15 +0100 Subject: [PATCH 31/53] Fixed incorrect selection in audio spatializer dropdown on startup in `PerBuildAudioSettings` action --- CHANGELOG.md | 6 +++++- Editor/PerBuildAudioSettings/PerBuildAudioSettings.cs | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e8e7b95..b84446d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - +## [Unreleased] + +### Changed + +- Fixed incorrect selection in audio spatializer dropdown on startup in `PerBuildAudioSettings` action ## [2.1.0] - 2021-08-24 diff --git a/Editor/PerBuildAudioSettings/PerBuildAudioSettings.cs b/Editor/PerBuildAudioSettings/PerBuildAudioSettings.cs index 6d8ceca..c725dba 100644 --- a/Editor/PerBuildAudioSettings/PerBuildAudioSettings.cs +++ b/Editor/PerBuildAudioSettings/PerBuildAudioSettings.cs @@ -23,6 +23,7 @@ private void OnEnable() { spatializerPluginNames = AudioSettings.GetSpatializerPluginNames(); spatializerPluginNames = spatializerPluginNames.Prepend("None").ToArray(); + index = Math.Max(Array.IndexOf(spatializerPluginNames, SpatializerPlugin), 0); } protected override void DrawProperty(SerializedProperty prop) From b38a2ee8aaf91741a4c596601b44d0b39d4cfe1d Mon Sep 17 00:00:00 2001 From: Robin North Date: Thu, 7 Oct 2021 10:06:07 +0100 Subject: [PATCH 32/53] =?UTF-8?q?v2.1.1=20=F0=9F=9A=80=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 7 +++++-- package.json | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b84446d..7d3f606 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,9 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] + + +## [2.1.1] - 2021-10-07 ### Changed @@ -67,7 +69,8 @@ This release includes all [previous commits][1.0.0] to the project, plus: - `OverrideDefines` action no longer ignore pre build defines. [PR #17](https://github.com/superunitybuild/buildactions/pull/17) -[unreleased]: https://github.com/superunitybuild/buildactions/compare/v2.1.0...HEAD +[unreleased]: https://github.com/superunitybuild/buildactions/compare/v2.1.1...HEAD +[2.1.1]: https://github.com/superunitybuild/buildactions/compare/v2.1.0...v2.1.1 [2.1.0]: https://github.com/superunitybuild/buildactions/compare/v2.0.0...v2.1.0 [2.0.0]: https://github.com/superunitybuild/buildactions/compare/v1.3.0...v2.0.0 [1.3.0]: https://github.com/superunitybuild/buildactions/compare/v1.2.0...v1.3.0 diff --git a/package.json b/package.json index aeafb91..77eec31 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "com.github.superunitybuild.buildactions", "displayName": "SuperUnityBuild BuildActions", - "version": "2.1.0", + "version": "2.1.1", "unity": "2019.1", "description": "BuildActions are one of the key components that make the SuperUnityBuild build automation tool flexible and powerful. Each one extends the capabilities of SuperUnityBuild and can be easily setup and customized to suit your needs", "type": "library", From c92c5b94ca0cf51cbc00347546453e80c8eb038c Mon Sep 17 00:00:00 2001 From: Robin North Date: Thu, 11 Nov 2021 12:26:56 +0000 Subject: [PATCH 33/53] Add Close Stale Issues GitHub Action --- .github/workflows/stale.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .github/workflows/stale.yml diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 0000000..f606e60 --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,27 @@ +# This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time. +# +# You can adjust the behavior by modifying this file. +# For more information, see: +# https://github.com/actions/stale +name: Mark stale issues and pull requests + +on: + workflow_dispatch: + schedule: + - cron: '40 20 * * *' + +jobs: + stale: + + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + + steps: + - uses: actions/stale@v4 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-label: 'stale' + stale-pr-label: 'stale' + exempt-issue-labels: 'bug,enhancement,help wanted' From d428020bed9713783407721acfcf6ff87276f2d0 Mon Sep 17 00:00:00 2001 From: Robin North Date: Wed, 2 Feb 2022 14:01:17 +0000 Subject: [PATCH 34/53] `ItchUploader` improvements - Added support for WebGL and UWP platforms, closes #26 - Fixed action generating invalid butler command for unsupported build platforms --- CHANGELOG.md | 14 ++++++++--- Editor/ItchUploader/UploadItch.cs | 42 +++++++++++++++---------------- 2 files changed, 32 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d3f606..e517c21 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,13 +5,21 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - +## [Unreleased] + +### Added + +- Added support for WebGL and UWP platforms to `ItchUploader` action. + +### Fixed + +- Fixed `ItchUploader` action generating invalid butler command for unknown build platforms. ## [2.1.1] - 2021-10-07 -### Changed +### Fixed -- Fixed incorrect selection in audio spatializer dropdown on startup in `PerBuildAudioSettings` action +- Fixed incorrect selection in audio spatializer dropdown on startup in `PerBuildAudioSettings` action. ## [2.1.0] - 2021-08-24 diff --git a/Editor/ItchUploader/UploadItch.cs b/Editor/ItchUploader/UploadItch.cs index 8d9cb57..fa09740 100644 --- a/Editor/ItchUploader/UploadItch.cs +++ b/Editor/ItchUploader/UploadItch.cs @@ -14,6 +14,7 @@ public class UploadItch : BuildAction, IPostBuildPerPlatformAction private const string LINUX = "linux"; private const string ANDROID = "android"; private const string WEBGL = "webgl"; + private const string UWP = "uwp"; private const string ARCHITECTURE_X86 = "x86"; private const string ARCHITECTURE_X64 = "x64"; @@ -71,20 +72,10 @@ public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform scriptArguments.Append("\"" + buildPath + "\"" + " " + nameOfItchUser + "/" + nameOfItchGame + ":"); - if (!string.IsNullOrEmpty(itchChannelOverride)) - { - scriptArguments.Append(itchChannelOverride); - } - else - { - string itchChannel = GetChannelName(channelName, architecture.target, releaseType); - if (string.IsNullOrEmpty(itchChannel)) - { - UnityEngine.Debug.LogWarning("UploadItch: The current BuildTarget doesn't appear to be a standard Itch.IO build target."); - } - - scriptArguments.Append(itchChannel); - } + scriptArguments.Append(!string.IsNullOrEmpty(itchChannelOverride) ? + itchChannelOverride : + GetChannelName(channelName, architecture.target, releaseType) + ); // UnityEngine.Debug.Log("Would have run itch uploader with following command line: \"" + pathToButlerExe + " " + scriptArguments + "\""); RunScript(pathToButlerExe, scriptArguments.ToString()); @@ -150,6 +141,7 @@ private static string GetChannelName(string channelNameFormat, BuildTarget targe { string platform = string.Empty; string architecture = string.Empty; + switch (target) { // Windows @@ -195,16 +187,24 @@ private static string GetChannelName(string channelNameFormat, BuildTarget targe platform = WEBGL; break; + // UWP + case BuildTarget.WSAPlayer: + platform = UWP; + architecture = EditorUserBuildSettings.wsaArchitecture; + break; + + // Other default: - return null; + UnityEngine.Debug.LogWarning("UploadItch: The current BuildTarget doesn't appear to be a standard Itch.IO build target."); + platform = target.ToString().ToLower(); + break; } - string channelName = channelNameFormat; - channelName = channelName.Replace("$PLATFORM", platform); - channelName = channelName.Replace("$ARCHITECTURE", architecture); - channelName = channelName.Replace("$RELEASE_TYPE", buildReleaseType.typeName); - - return channelName; + return channelNameFormat + .Replace("$PLATFORM", platform) + .Replace("$ARCHITECTURE", architecture) + .Replace("$RELEASE_TYPE", buildReleaseType.typeName) + .Trim('-'); } #endregion From 6c99f2595b87547a661d1918d911a42f643301dc Mon Sep 17 00:00:00 2001 From: Robin North Date: Thu, 3 Feb 2022 16:22:15 +0000 Subject: [PATCH 35/53] =?UTF-8?q?v2.2.0=20=F0=9F=9A=80=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 7 +++++-- package.json | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e517c21..6340c01 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,9 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] + + +## [2.2.0] - 2022-02-03 ### Added @@ -77,7 +79,8 @@ This release includes all [previous commits][1.0.0] to the project, plus: - `OverrideDefines` action no longer ignore pre build defines. [PR #17](https://github.com/superunitybuild/buildactions/pull/17) -[unreleased]: https://github.com/superunitybuild/buildactions/compare/v2.1.1...HEAD +[unreleased]: https://github.com/superunitybuild/buildactions/compare/v2.2.0...HEAD +[2.2.0]: https://github.com/superunitybuild/buildactions/compare/v2.1.1...v2.2.0 [2.1.1]: https://github.com/superunitybuild/buildactions/compare/v2.1.0...v2.1.1 [2.1.0]: https://github.com/superunitybuild/buildactions/compare/v2.0.0...v2.1.0 [2.0.0]: https://github.com/superunitybuild/buildactions/compare/v1.3.0...v2.0.0 diff --git a/package.json b/package.json index 77eec31..80cc97d 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,11 @@ { "name": "com.github.superunitybuild.buildactions", "displayName": "SuperUnityBuild BuildActions", - "version": "2.1.1", + "version": "2.2.0", "unity": "2019.1", "description": "BuildActions are one of the key components that make the SuperUnityBuild build automation tool flexible and powerful. Each one extends the capabilities of SuperUnityBuild and can be easily setup and customized to suit your needs", "type": "library", "dependencies": { "com.github.superunitybuild.buildtool": "2.1.0" } -} +} \ No newline at end of file From aba3957dc4301f763caceb644ad0428ca8a9a99e Mon Sep 17 00:00:00 2001 From: Robin North Date: Wed, 1 Mar 2023 14:12:54 +0000 Subject: [PATCH 36/53] Support saving as Zip64 when necessary in ZipFile build action (fixes #29) --- Editor/ZipFile/ZipFileOperation.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Editor/ZipFile/ZipFileOperation.cs b/Editor/ZipFile/ZipFileOperation.cs index a59ffa8..4a463c0 100644 --- a/Editor/ZipFile/ZipFileOperation.cs +++ b/Editor/ZipFile/ZipFileOperation.cs @@ -1,7 +1,7 @@ -using System; -using System.IO; -using Ionic.Zip; +using Ionic.Zip; using SuperUnityBuild.BuildTool; +using System; +using System.IO; using UnityEngine; namespace SuperUnityBuild.BuildActions @@ -53,6 +53,7 @@ private void PerformZip(string inputPath, string outputPath) using (ZipFile zip = new ZipFile(outputPath)) { zip.ParallelDeflateThreshold = -1; // Parallel deflate is bugged in DotNetZip, so we need to disable it. + zip.UseZip64WhenSaving = Zip64Option.AsNecessary; zip.AddDirectory(inputPath); zip.Save(); } From e9274b28d36c45b8fc7eb6dea44506dace054e4e Mon Sep 17 00:00:00 2001 From: Robin North Date: Thu, 11 May 2023 13:39:48 +0100 Subject: [PATCH 37/53] Update stale.yml --- .github/workflows/stale.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index f606e60..36d9060 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -24,4 +24,4 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-label: 'stale' stale-pr-label: 'stale' - exempt-issue-labels: 'bug,enhancement,help wanted' + exempt-issue-labels: 'bug,defect,enhancement,hacktoberfest,help wanted' From 5ad79b4077734cf332d8dab42a9692960433a748 Mon Sep 17 00:00:00 2001 From: Robin North Date: Thu, 11 May 2023 13:42:53 +0100 Subject: [PATCH 38/53] Update stale.yml --- .github/workflows/stale.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 36d9060..e9eb538 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -25,3 +25,4 @@ jobs: stale-issue-label: 'stale' stale-pr-label: 'stale' exempt-issue-labels: 'bug,defect,enhancement,hacktoberfest,help wanted' + exempt-pr-labels: 'bug,defect,enhancement,hacktoberfest,help wanted' From e159eca846f94ca15f6db5bd3e2459cd2939dbc5 Mon Sep 17 00:00:00 2001 From: Robin North Date: Thu, 11 May 2023 13:45:13 +0100 Subject: [PATCH 39/53] Support new per-build scripting backend functionality --- Editor/AssetBundle/BuildAssetBundles.cs | 12 ++++++------ Editor/FileUtility/FileOperation.cs | 6 +++--- Editor/FileUtility/FileUtility.cs | 4 ++-- Editor/FileUtility/FolderOperation.cs | 6 +++--- Editor/ItchUploader/UploadItch.cs | 2 +- Editor/OverrideDefines/OverrideDefines.cs | 8 ++++---- Editor/PackageManagement/PackageManagement.cs | 2 +- .../PerBuildAudioSettings/PerBuildAudioSettings.cs | 2 +- .../PerBuildPlayerSettings/PerBuildPlayerSettings.cs | 2 +- Editor/ScriptRunner/ScriptRunner.cs | 6 +++--- Editor/XRPluginManagement/XRPluginManagement.cs | 2 +- Editor/ZipFile/ZipFileOperation.cs | 6 +++--- 12 files changed, 29 insertions(+), 29 deletions(-) diff --git a/Editor/AssetBundle/BuildAssetBundles.cs b/Editor/AssetBundle/BuildAssetBundles.cs index ae23526..41b5eb6 100644 --- a/Editor/AssetBundle/BuildAssetBundles.cs +++ b/Editor/AssetBundle/BuildAssetBundles.cs @@ -25,6 +25,7 @@ public override void PerBuildExecute( BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, + BuildScriptingBackend scriptingBackend, BuildDistribution distribution, System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) { @@ -39,12 +40,13 @@ public void BuildAll() { BuildReleaseType releaseType; BuildPlatform platform; - BuildArchitecture arch; - BuildDistribution dist; + BuildArchitecture architecture; + BuildDistribution distribution; + BuildScriptingBackend scriptingBackend; string configKey = buildConfigs[i]; - BuildSettings.projectConfigurations.ParseKeychain(configKey, out releaseType, out platform, out arch, out dist); - Build(platform, arch); + BuildSettings.projectConfigurations.ParseKeychain(configKey, out releaseType, out platform, out architecture, out scriptingBackend, out distribution); + Build(platform, architecture); } } @@ -55,9 +57,7 @@ protected override void DrawProperties(SerializedObject obj) options = (BuildAssetBundleOptions)EditorGUILayout.EnumFlagsField("Options", options); if (GUILayout.Button("Run Now", GUILayout.ExpandWidth(true))) - { BuildAll(); - } } #endregion diff --git a/Editor/FileUtility/FileOperation.cs b/Editor/FileUtility/FileOperation.cs index d68166a..94eeb24 100644 --- a/Editor/FileUtility/FileOperation.cs +++ b/Editor/FileUtility/FileOperation.cs @@ -37,10 +37,10 @@ public override void Execute() AssetDatabase.Refresh(); } - public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) + public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) { - string resolvedInputPath = FileUtility.ResolvePerBuildPath(inputPath, releaseType, platform, architecture, distribution, buildTime, buildPath); - string resolvedOutputPath = FileUtility.ResolvePerBuildPath(outputPath, releaseType, platform, architecture, distribution, buildTime, buildPath); + string resolvedInputPath = FileUtility.ResolvePerBuildPath(inputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime, buildPath); + string resolvedOutputPath = FileUtility.ResolvePerBuildPath(outputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime, buildPath); switch (operation) { diff --git a/Editor/FileUtility/FileUtility.cs b/Editor/FileUtility/FileUtility.cs index 00b00f0..b2b0d8e 100644 --- a/Editor/FileUtility/FileUtility.cs +++ b/Editor/FileUtility/FileUtility.cs @@ -29,13 +29,13 @@ public static string ResolvePath(string prototype) return sb.ToString(); } - public static string ResolvePerBuildPath(string prototype, BuildReleaseType releaseType, BuildPlatform buildPlatform, BuildArchitecture arch, BuildDistribution dist, DateTime buildTime, string buildPath) + public static string ResolvePerBuildPath(string prototype, BuildReleaseType releaseType, BuildPlatform buildPlatform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, DateTime buildTime, string buildPath) { return BuildProject.ResolvePath( prototype .Replace("$BUILDPATH", buildPath) .Replace("$BASEPATH", BuildSettings.basicSettings.baseBuildFolder), - releaseType, buildPlatform, arch, dist, buildTime); + releaseType, buildPlatform, architecture, scriptingBackend, distribution, buildTime); } } } diff --git a/Editor/FileUtility/FolderOperation.cs b/Editor/FileUtility/FolderOperation.cs index 4a30946..5b0f160 100644 --- a/Editor/FileUtility/FolderOperation.cs +++ b/Editor/FileUtility/FolderOperation.cs @@ -36,10 +36,10 @@ public override void Execute() AssetDatabase.Refresh(); } - public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) + public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) { - string resolvedInputPath = FileUtility.ResolvePerBuildPath(inputPath, releaseType, platform, architecture, distribution, buildTime, buildPath); - string resolvedOutputPath = FileUtility.ResolvePerBuildPath(outputPath, releaseType, platform, architecture, distribution, buildTime, buildPath); + string resolvedInputPath = FileUtility.ResolvePerBuildPath(inputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime, buildPath); + string resolvedOutputPath = FileUtility.ResolvePerBuildPath(outputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime, buildPath); switch (operation) { diff --git a/Editor/ItchUploader/UploadItch.cs b/Editor/ItchUploader/UploadItch.cs index fa09740..c35cb5e 100644 --- a/Editor/ItchUploader/UploadItch.cs +++ b/Editor/ItchUploader/UploadItch.cs @@ -37,7 +37,7 @@ public class UploadItch : BuildAction, IPostBuildPerPlatformAction #region Public Methods - public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) + public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) { // Verify that butler executable exists. if (!File.Exists(pathToButlerExe)) diff --git a/Editor/OverrideDefines/OverrideDefines.cs b/Editor/OverrideDefines/OverrideDefines.cs index b281d04..c2cc947 100644 --- a/Editor/OverrideDefines/OverrideDefines.cs +++ b/Editor/OverrideDefines/OverrideDefines.cs @@ -12,16 +12,16 @@ public class OverrideDefines : BuildAction, IPreBuildPerPlatformAction, IPreBuil public string removeDefines; public string addDefines; - public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) + public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) { string preBuildDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(platform.targetGroup); - string defaultDefines = BuildProject.GenerateDefaultDefines(releaseType, platform, architecture, distribution); + string defaultDefines = BuildProject.GenerateDefaultDefines(releaseType, platform, architecture, scriptingBackend, distribution); StringBuilder mergedDefines = new StringBuilder(BuildProject.MergeDefines(preBuildDefines, defaultDefines)); if (!string.IsNullOrEmpty(removeDefines)) { - string resolvedRemove = BuildProject.ResolvePath(removeDefines, releaseType, platform, architecture, distribution, buildTime); + string resolvedRemove = BuildProject.ResolvePath(removeDefines, releaseType, platform, architecture, scriptingBackend, distribution, buildTime); string[] splitRemove = resolvedRemove.Split(';'); for (int i = 0; i < splitRemove.Length; i++) @@ -33,7 +33,7 @@ public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform if (!string.IsNullOrEmpty(addDefines)) { - string resolvedAdd = BuildProject.ResolvePath(addDefines, releaseType, platform, architecture, distribution, buildTime); + string resolvedAdd = BuildProject.ResolvePath(addDefines, releaseType, platform, architecture, scriptingBackend, distribution, buildTime); if (mergedDefines.Length > 0) mergedDefines.Append(";"); diff --git a/Editor/PackageManagement/PackageManagement.cs b/Editor/PackageManagement/PackageManagement.cs index a46a626..dd39da5 100644 --- a/Editor/PackageManagement/PackageManagement.cs +++ b/Editor/PackageManagement/PackageManagement.cs @@ -13,7 +13,7 @@ public class PackageManagement : BuildAction, IPreBuildAction, IPreBuildPerPlatf [Tooltip("List of package IDs to add")] public List PackagesToAdd = new List(); [Tooltip("List of package IDs to remove")] public List PackagesToRemove = new List(); - public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) + public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) { PackagesToRemove.ForEach(id => HandleRequest(Client.Remove(id), id)); diff --git a/Editor/PerBuildAudioSettings/PerBuildAudioSettings.cs b/Editor/PerBuildAudioSettings/PerBuildAudioSettings.cs index c725dba..1e9a415 100644 --- a/Editor/PerBuildAudioSettings/PerBuildAudioSettings.cs +++ b/Editor/PerBuildAudioSettings/PerBuildAudioSettings.cs @@ -10,7 +10,7 @@ public class PerBuildAudioSettings : BuildAction, IPreBuildPerPlatformAction, IP { [Tooltip("Spatializer plugin to use for this build")] public string SpatializerPlugin = ""; - public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) + public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) { // Set spatializer plugin AudioSettings.SetSpatializerPluginName(SpatializerPlugin); diff --git a/Editor/PerBuildPlayerSettings/PerBuildPlayerSettings.cs b/Editor/PerBuildPlayerSettings/PerBuildPlayerSettings.cs index 65d49b0..7f5f159 100644 --- a/Editor/PerBuildPlayerSettings/PerBuildPlayerSettings.cs +++ b/Editor/PerBuildPlayerSettings/PerBuildPlayerSettings.cs @@ -14,7 +14,7 @@ public class PerBuildPlayerSettings : BuildAction, IPreBuildPerPlatformAction, I [Tooltip("Preloaded assets to set for this build")] public List PreloadedAssets = new List(); [Tooltip("Whether or not to preserve existing preloaded assets")] public bool PreservePreloadedAssets = true; - public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) + public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) { // Set preloaded assets Object[] preloadedAssets = PlayerSettings.GetPreloadedAssets(); diff --git a/Editor/ScriptRunner/ScriptRunner.cs b/Editor/ScriptRunner/ScriptRunner.cs index c7d9d0a..43d7106 100644 --- a/Editor/ScriptRunner/ScriptRunner.cs +++ b/Editor/ScriptRunner/ScriptRunner.cs @@ -16,10 +16,10 @@ public override void Execute() RunScript(scriptPath, scriptArguments); } - public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) + public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) { - string resolvedScriptPath = BuildProject.ResolvePath(scriptPath, releaseType, platform, architecture, distribution, buildTime); - string resolvedScriptArgs = BuildProject.ResolvePath(scriptArguments, releaseType, platform, architecture, distribution, buildTime); + string resolvedScriptPath = BuildProject.ResolvePath(scriptPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime); + string resolvedScriptArgs = BuildProject.ResolvePath(scriptArguments, releaseType, platform, architecture, scriptingBackend, distribution, buildTime); RunScript(resolvedScriptPath, resolvedScriptArgs); } diff --git a/Editor/XRPluginManagement/XRPluginManagement.cs b/Editor/XRPluginManagement/XRPluginManagement.cs index 9c9eb01..fccdb6c 100644 --- a/Editor/XRPluginManagement/XRPluginManagement.cs +++ b/Editor/XRPluginManagement/XRPluginManagement.cs @@ -15,7 +15,7 @@ public class XRPluginManagement : BuildAction, IPreBuildPerPlatformAction, IPost [Tooltip("XR plugin loaders to use for this build")] public List XRPlugins = new List(); [Tooltip("Whether or not to use automatic initialization of XR plugin loaders on startup")] public bool InitializeXROnStartup = true; - public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) + public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) { XRGeneralSettings generalSettings = XRGeneralSettingsPerBuildTarget.XRGeneralSettingsForBuildTarget(platform.targetGroup); XRManagerSettings settingsManager = generalSettings.Manager; diff --git a/Editor/ZipFile/ZipFileOperation.cs b/Editor/ZipFile/ZipFileOperation.cs index 4a463c0..720d42e 100644 --- a/Editor/ZipFile/ZipFileOperation.cs +++ b/Editor/ZipFile/ZipFileOperation.cs @@ -12,13 +12,13 @@ public class ZipFileOperation : BuildAction, IPreBuildAction, IPreBuildPerPlatfo public string outputPath = "$BUILDPATH"; public string outputFileName = "$PRODUCT_NAME-$RELEASE_TYPE-$YEAR_$MONTH_$DAY.zip"; - public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, System.DateTime buildTime, ref UnityEditor.BuildOptions options, string configKey, string buildPath) + public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, System.DateTime buildTime, ref UnityEditor.BuildOptions options, string configKey, string buildPath) { string resolvedOutputPath = Path.Combine(outputPath.Replace("$BUILDPATH", buildPath), outputFileName); - resolvedOutputPath = BuildProject.ResolvePath(resolvedOutputPath, releaseType, platform, architecture, distribution, buildTime); + resolvedOutputPath = BuildProject.ResolvePath(resolvedOutputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime); string resolvedInputPath = inputPath.Replace("$BUILDPATH", buildPath); - resolvedInputPath = BuildProject.ResolvePath(resolvedInputPath, releaseType, platform, architecture, distribution, buildTime); + resolvedInputPath = BuildProject.ResolvePath(resolvedInputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime); if (!resolvedOutputPath.EndsWith(".zip")) resolvedOutputPath += ".zip"; From a9c31602addbac6cc2fe4a5d92340f312d8c2f1b Mon Sep 17 00:00:00 2001 From: Robin North Date: Fri, 12 May 2023 13:42:46 +0100 Subject: [PATCH 40/53] Update package manifest - Add author details - Add documentation, changelog and license URLs --- package.json | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 80cc97d..a308fe9 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,14 @@ "version": "2.2.0", "unity": "2019.1", "description": "BuildActions are one of the key components that make the SuperUnityBuild build automation tool flexible and powerful. Each one extends the capabilities of SuperUnityBuild and can be easily setup and customized to suit your needs", - "type": "library", + "changelogUrl": "CHANGELOG.md", + "documentationUrl": "https://github.com/superunitybuild/buildtool/wiki", + "licenseUrl": "LICENSE.md", "dependencies": { "com.github.superunitybuild.buildtool": "2.1.0" + }, + "author": { + "name": "SuperUnityBuild", + "url": "https://github.com/superunitybuild" } -} \ No newline at end of file +} From 4226bd9b3fa5a93f857bd65d6c509691c0ee0085 Mon Sep 17 00:00:00 2001 From: Robin North Date: Fri, 12 May 2023 13:52:42 +0100 Subject: [PATCH 41/53] Drop support for versions of Unity older than 2020.3 LTS --- Editor/ItchUploader/UploadItch.cs | 15 +---- Editor/XRSettings.meta | 8 --- Editor/XRSettings/README.md | 3 - Editor/XRSettings/README.md.meta | 7 --- Editor/XRSettings/XRSettings.cs | 91 ---------------------------- Editor/XRSettings/XRSettings.cs.meta | 11 ---- README.md | 2 - package.json | 2 +- 8 files changed, 2 insertions(+), 137 deletions(-) delete mode 100644 Editor/XRSettings.meta delete mode 100644 Editor/XRSettings/README.md delete mode 100644 Editor/XRSettings/README.md.meta delete mode 100644 Editor/XRSettings/XRSettings.cs delete mode 100644 Editor/XRSettings/XRSettings.cs.meta diff --git a/Editor/ItchUploader/UploadItch.cs b/Editor/ItchUploader/UploadItch.cs index c35cb5e..5870c77 100644 --- a/Editor/ItchUploader/UploadItch.cs +++ b/Editor/ItchUploader/UploadItch.cs @@ -1,4 +1,5 @@ using SuperUnityBuild.BuildTool; +using System; using System.Diagnostics; using System.IO; using System.Text; @@ -54,10 +55,6 @@ public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform switch (architecture.target) { case BuildTarget.StandaloneOSX: -#if !UNITY_2019_2_OR_NEWER - case BuildTarget.StandaloneLinux: - case BuildTarget.StandaloneLinuxUniversal: -#endif case BuildTarget.StandaloneLinux64: // Fix exe permissions for Linux/OSX. scriptArguments.Append("--fix-permissions "); @@ -155,16 +152,6 @@ private static string GetChannelName(string channelNameFormat, BuildTarget targe break; // Linux -#if !UNITY_2019_2_OR_NEWER - case BuildTarget.StandaloneLinux: - platform = LINUX; - architecture = ARCHITECTURE_X86; - break; - case BuildTarget.StandaloneLinuxUniversal: - platform = LINUX; - architecture = ARCHITECTURE_UNIVERSAL; - break; -#endif case BuildTarget.StandaloneLinux64: platform = LINUX; architecture = ARCHITECTURE_X64; diff --git a/Editor/XRSettings.meta b/Editor/XRSettings.meta deleted file mode 100644 index b518eb5..0000000 --- a/Editor/XRSettings.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a5209becd02e09d48a85b9802cad3daf -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Editor/XRSettings/README.md b/Editor/XRSettings/README.md deleted file mode 100644 index 0181ee1..0000000 --- a/Editor/XRSettings/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# SuperUnityBuild - XR Settings - -> Enable per-build legacy Unity XR settings diff --git a/Editor/XRSettings/README.md.meta b/Editor/XRSettings/README.md.meta deleted file mode 100644 index 8ce1f83..0000000 --- a/Editor/XRSettings/README.md.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 7e93517b9a4bad54f9d06404d0d979b6 -TextScriptImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Editor/XRSettings/XRSettings.cs b/Editor/XRSettings/XRSettings.cs deleted file mode 100644 index d22d0e5..0000000 --- a/Editor/XRSettings/XRSettings.cs +++ /dev/null @@ -1,91 +0,0 @@ -#if !UNITY_2020_2_OR_NEWER && !UNITY_XR_MANAGEMENT -#if UNITY_2019_2_OR_NEWER -#define SUPPORTS_OCULUS_V2_SIGNING -#endif - -using SuperUnityBuild.BuildTool; -using System; -using System.Collections.Generic; -using UnityEditor; -using UnityEngine; - -namespace SuperUnityBuild.BuildActions -{ - public class XRSettings : BuildAction, IPreBuildPerPlatformAction, IPostBuildPerPlatformAction, IPreBuildPerPlatformActionCanConfigureEditor - { - public enum SDK - { - None, - Cardboard, - Daydream, - MockHMD, - Oculus, - OpenVR, - StereoDisplay, - } - - // Mapping of SDKs enum to Unity's inconsistent internal names - readonly Dictionary sdkNames = new Dictionary() - { - {SDK.None, "None"}, - {SDK.Cardboard, "cardboard"}, - {SDK.Daydream, "daydream"}, - {SDK.MockHMD, "MockHMD"}, - {SDK.Oculus, "Oculus"}, - {SDK.OpenVR, "OpenVR"}, - {SDK.StereoDisplay, "stereo"} - }; - - [Header("XR Settings")] - [Tooltip("VR SDKs for build target, in order of priority")] - public List Sdks = new List(); - [Tooltip("Whether or not build target supports VR")] - public bool VRSupported; - [Tooltip("Stereo rendering mode to use")] - public StereoRenderingPath StereoRenderingMode; - -#if SUPPORTS_OCULUS_V2_SIGNING - [Header("SDK-Specific Settings")] - [Tooltip("Oculus: Whether or not to use v2 APK signing (enable for Quest, disable for Gear VR/Go)")] - public bool OculusV2Signing = true; -#endif - - [Header("Platform-Specific Settings")] - [Tooltip("Android: Whether or not build target supports ARCore")] - public bool ARCoreSupported; - - public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) - { - // Get valid SDKs for platform - string[] validSDKs = PlayerSettings.GetAvailableVirtualRealitySDKs(platform.targetGroup); - - // Build list of valid SDKs to set - List sdks = new List(); - - foreach (SDK sdk in Sdks) - { - string sdkName = sdkNames[sdk]; - - if (Array.IndexOf(validSDKs, sdkName) != -1) - { - sdks.Add(sdkName); - } - } - - // Update player settings - PlayerSettings.SetVirtualRealitySupported(platform.targetGroup, VRSupported); - PlayerSettings.SetVirtualRealitySDKs(platform.targetGroup, sdks.ToArray()); - PlayerSettings.stereoRenderingPath = StereoRenderingMode; - -#if SUPPORTS_OCULUS_V2_SIGNING - PlayerSettings.VROculus.v2Signing = OculusV2Signing; -#endif - - if (platform.targetGroup == BuildTargetGroup.Android) - { - PlayerSettings.Android.ARCoreEnabled = ARCoreSupported; - } - } - } -} -#endif diff --git a/Editor/XRSettings/XRSettings.cs.meta b/Editor/XRSettings/XRSettings.cs.meta deleted file mode 100644 index 700d3b6..0000000 --- a/Editor/XRSettings/XRSettings.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 9895d1b92e2dd6a41b67909ee897d770 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/README.md b/README.md index 0f7c63d..fa394b3 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,6 @@ Refer to the [SuperUnityBuild wiki][wiki] for basic information on how to setup, - [**Override Defines**][overridedefines] - Add/remove script defines. - [**Package Management**][packagemanagement] - Enable per-build Unity Package Manager settings. - [**Per-Build Player Settings**][perbuildplayersettings] - Enable per-build Player settings. -- [**XR Settings**][xrsettings] - Enable per-build legacy Unity XR settings. - [**XR Plug-in Management**][xrpluginmanagement] - Enable per-build [Unity XR Plug-in Management](https://docs.unity3d.com/Packages/com.unity.xr.management@latest) settings. ## Contributing @@ -80,4 +79,3 @@ Zip File Utility includes a pre-compiled DotNetZip library which is licensed und [packagemanagement]: https://github.com/superunitybuild/buildactions/tree/master/Editor/PackageManagement [perbuildplayersettings]: https://github.com/superunitybuild/buildactions/tree/master/Editor/PerBuildPlayerSettings [xrpluginmanagement]: https://github.com/superunitybuild/buildactions/tree/master/Editor/XRPluginManagement -[xrsettings]: https://github.com/superunitybuild/buildactions/tree/master/Editor/XRSettings diff --git a/package.json b/package.json index a308fe9..458320b 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "com.github.superunitybuild.buildactions", "displayName": "SuperUnityBuild BuildActions", "version": "2.2.0", - "unity": "2019.1", + "unity": "2020.3", "description": "BuildActions are one of the key components that make the SuperUnityBuild build automation tool flexible and powerful. Each one extends the capabilities of SuperUnityBuild and can be easily setup and customized to suit your needs", "changelogUrl": "CHANGELOG.md", "documentationUrl": "https://github.com/superunitybuild/buildtool/wiki", From 1f8d942bb710680b12408d008ad091395f4f26c2 Mon Sep 17 00:00:00 2001 From: Robin North Date: Fri, 12 May 2023 14:00:30 +0100 Subject: [PATCH 42/53] Code style lint --- Editor/AssetBundle/BuildAssetBundles.cs | 3 ++- Editor/ItchUploader/UploadItch.cs | 2 +- Editor/OverrideDefines/OverrideDefines.cs | 6 ++---- Editor/ScriptRunner/ScriptRunner.cs | 3 ++- Editor/ZipFile/ZipFileOperation.cs | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Editor/AssetBundle/BuildAssetBundles.cs b/Editor/AssetBundle/BuildAssetBundles.cs index 41b5eb6..b76995f 100644 --- a/Editor/AssetBundle/BuildAssetBundles.cs +++ b/Editor/AssetBundle/BuildAssetBundles.cs @@ -1,4 +1,5 @@ using SuperUnityBuild.BuildTool; +using System; using System.IO; using System.Text; using UnityEditor; @@ -27,7 +28,7 @@ public override void PerBuildExecute( BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, - System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) + DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) { Build(platform, architecture); } diff --git a/Editor/ItchUploader/UploadItch.cs b/Editor/ItchUploader/UploadItch.cs index 5870c77..480ded2 100644 --- a/Editor/ItchUploader/UploadItch.cs +++ b/Editor/ItchUploader/UploadItch.cs @@ -38,7 +38,7 @@ public class UploadItch : BuildAction, IPostBuildPerPlatformAction #region Public Methods - public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) + public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) { // Verify that butler executable exists. if (!File.Exists(pathToButlerExe)) diff --git a/Editor/OverrideDefines/OverrideDefines.cs b/Editor/OverrideDefines/OverrideDefines.cs index c2cc947..2415ab6 100644 --- a/Editor/OverrideDefines/OverrideDefines.cs +++ b/Editor/OverrideDefines/OverrideDefines.cs @@ -1,9 +1,7 @@ using SuperUnityBuild.BuildTool; -using System.Collections; -using System.IO; +using System; using System.Text; using UnityEditor; -using UnityEngine; namespace SuperUnityBuild.BuildActions { @@ -12,7 +10,7 @@ public class OverrideDefines : BuildAction, IPreBuildPerPlatformAction, IPreBuil public string removeDefines; public string addDefines; - public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) + public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) { string preBuildDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(platform.targetGroup); string defaultDefines = BuildProject.GenerateDefaultDefines(releaseType, platform, architecture, scriptingBackend, distribution); diff --git a/Editor/ScriptRunner/ScriptRunner.cs b/Editor/ScriptRunner/ScriptRunner.cs index 43d7106..730ea04 100644 --- a/Editor/ScriptRunner/ScriptRunner.cs +++ b/Editor/ScriptRunner/ScriptRunner.cs @@ -1,4 +1,5 @@ using SuperUnityBuild.BuildTool; +using System; using System.Diagnostics; using System.IO; using UnityEditor; @@ -16,7 +17,7 @@ public override void Execute() RunScript(scriptPath, scriptArguments); } - public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, System.DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) + public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) { string resolvedScriptPath = BuildProject.ResolvePath(scriptPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime); string resolvedScriptArgs = BuildProject.ResolvePath(scriptArguments, releaseType, platform, architecture, scriptingBackend, distribution, buildTime); diff --git a/Editor/ZipFile/ZipFileOperation.cs b/Editor/ZipFile/ZipFileOperation.cs index 720d42e..38ffed9 100644 --- a/Editor/ZipFile/ZipFileOperation.cs +++ b/Editor/ZipFile/ZipFileOperation.cs @@ -12,7 +12,7 @@ public class ZipFileOperation : BuildAction, IPreBuildAction, IPreBuildPerPlatfo public string outputPath = "$BUILDPATH"; public string outputFileName = "$PRODUCT_NAME-$RELEASE_TYPE-$YEAR_$MONTH_$DAY.zip"; - public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, System.DateTime buildTime, ref UnityEditor.BuildOptions options, string configKey, string buildPath) + public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, DateTime buildTime, ref UnityEditor.BuildOptions options, string configKey, string buildPath) { string resolvedOutputPath = Path.Combine(outputPath.Replace("$BUILDPATH", buildPath), outputFileName); resolvedOutputPath = BuildProject.ResolvePath(resolvedOutputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime); From 85484ac360e34bfc47a72344e41f4670f51b1b5d Mon Sep 17 00:00:00 2001 From: Robin North Date: Fri, 12 May 2023 14:12:17 +0100 Subject: [PATCH 43/53] Update CHANGELOG --- CHANGELOG.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6340c01..49b217f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,16 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - +## [Unreleased] + +### Added + +- **Breaking change:** Added support new per-build scripting backend functionality. +- Added author details and documentation, changelog and license URLs to package manifest. + +### Changed + +- **Breaking change:** Drop support for versions of Unity older than 2020.3 LTS. ## [2.2.0] - 2022-02-03 From 753a3867b3c21139c4406716b53995fa81b33934 Mon Sep 17 00:00:00 2001 From: Robin North Date: Thu, 18 May 2023 12:58:13 +0100 Subject: [PATCH 44/53] Refactor `FileUtility` build action - Fix exceptions when paths not configured - Refactor to reduce code repetition --- CHANGELOG.md | 1 + Editor/FileUtility/FileOperation.cs | 236 +++++++++----------------- Editor/FileUtility/FileUtility.cs | 74 +++++++- Editor/FileUtility/FolderOperation.cs | 151 +++++----------- 4 files changed, 199 insertions(+), 263 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 49b217f..ef8b0fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - **Breaking change:** Drop support for versions of Unity older than 2020.3 LTS. +- Refactor `FileUtility` build action and fix exceptions when paths not configured. ## [2.2.0] - 2022-02-03 diff --git a/Editor/FileUtility/FileOperation.cs b/Editor/FileUtility/FileOperation.cs index 94eeb24..c3c23e4 100644 --- a/Editor/FileUtility/FileOperation.cs +++ b/Editor/FileUtility/FileOperation.cs @@ -21,20 +21,7 @@ public override void Execute() string resolvedInputPath = FileUtility.ResolvePath(inputPath); string resolvedOutputPath = FileUtility.ResolvePath(outputPath); - switch (operation) - { - case Operation.Copy: - Copy(resolvedInputPath, resolvedOutputPath); - break; - case Operation.Move: - Move(resolvedInputPath, resolvedOutputPath); - break; - case Operation.Delete: - Delete(resolvedInputPath); - break; - } - - AssetDatabase.Refresh(); + PerformOperation(resolvedInputPath, resolvedOutputPath); } public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) @@ -42,20 +29,7 @@ public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform string resolvedInputPath = FileUtility.ResolvePerBuildPath(inputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime, buildPath); string resolvedOutputPath = FileUtility.ResolvePerBuildPath(outputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime, buildPath); - switch (operation) - { - case Operation.Copy: - Copy(resolvedInputPath, resolvedOutputPath); - break; - case Operation.Move: - Move(resolvedInputPath, resolvedOutputPath); - break; - case Operation.Delete: - Delete(resolvedInputPath); - break; - } - - AssetDatabase.Refresh(); + PerformOperation(resolvedInputPath, resolvedOutputPath); } protected override void DrawProperties(SerializedObject obj) @@ -73,126 +47,79 @@ protected override void DrawProperties(SerializedObject obj) EditorGUILayout.PropertyField(obj.FindProperty("outputPath")); } - private void Move(string inputPath, string outputPath, bool overwrite = true) + private void PerformOperation(string inputPath, string outputPath) { - bool success = true; - string errorString = ""; - bool containsWildcard = FileUtility.ContainsWildcard(inputPath); - - if (!containsWildcard && !File.Exists(inputPath)) - { - // Error. Input does not exist. - success = false; - errorString = $"Input \"{inputPath}\" does not exist."; - } - - if (success && !containsWildcard && overwrite && File.Exists(outputPath)) + switch (operation) { - // Delete previous output. - success = FileUtil.DeleteFileOrDirectory(outputPath); - - if (!success) - errorString = $"Could not overwrite existing file \"{outputPath}\"."; + case Operation.Copy: + Copy(inputPath, outputPath); + break; + case Operation.Move: + Move(inputPath, outputPath); + break; + case Operation.Delete: + Delete(inputPath); + break; } - if (success && containsWildcard) - { - string inputDirectory = Path.GetDirectoryName(inputPath); - string outputDirectory = Path.GetDirectoryName(outputPath); - - SearchOption option = recursiveSearch ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly; - string[] fileList = Directory.GetFiles(inputDirectory, Path.GetFileName(inputPath), option); - - for (int i = 0; i < fileList.Length; i++) - { - if (!success) - break; - - string fileName = Path.GetFileName(fileList[i]); - string outputFile = Path.Combine(outputDirectory, fileName); - - if (File.Exists(outputFile)) - success = FileUtil.DeleteFileOrDirectory(outputFile); - - if (!success) - errorString = $"Could not overwrite existing file \"{outputPath}\"."; + AssetDatabase.Refresh(); + } - FileUtil.MoveFileOrDirectory(fileList[i], outputFile); - } - } - else if (success) - { - FileUtil.MoveFileOrDirectory(inputPath, outputPath); - } + private void Copy(string inputPath, string outputPath, bool overwrite = true) + { + CopyOrMove(true, inputPath, outputPath, overwrite); + } - if (!success && !string.IsNullOrEmpty(errorString)) - { - BuildNotificationList.instance.AddNotification(new BuildNotification( - BuildNotification.Category.Error, - "File Move Failed.", errorString, - true, null)); - } + private void Move(string inputPath, string outputPath, bool overwrite = true) + { + CopyOrMove(false, inputPath, outputPath, overwrite); } - private void Copy(string inputPath, string outputPath, bool overwrite = true) + private void CopyOrMove(bool isCopy, string inputPath, string outputPath, bool overwrite = true) { + Action fileOperation = FileUtility.GetCopyOrMoveAction(isCopy); + bool success = true; string errorString = ""; bool containsWildcard = FileUtility.ContainsWildcard(inputPath); - if (!containsWildcard && !File.Exists(inputPath)) - { - // Error. Input does not exist. - success = false; - errorString = $"Input \"{inputPath}\" does not exist."; - } - - if (success && !containsWildcard && overwrite && File.Exists(outputPath)) - { - // Delete previous output. - success = FileUtil.DeleteFileOrDirectory(outputPath); + success = ValidatePath(inputPath, FileUtility.PathType.Input, !containsWildcard, out errorString); - if (!success) - errorString = $"Could not overwrite existing file \"{outputPath}\"."; - } + if (success) + success = ValidatePath(outputPath, FileUtility.PathType.Output, false, out errorString); - if (success && containsWildcard) + if (success) { - string inputDirectory = Path.GetDirectoryName(inputPath); - string outputDirectory = Path.GetDirectoryName(outputPath); - - SearchOption option = recursiveSearch ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly; - string[] fileList = Directory.GetFiles(inputDirectory, Path.GetFileName(inputPath), option); - - for (int i = 0; i < fileList.Length; i++) + if (containsWildcard) { - if (!success) - break; + string outputDirectory = Path.GetDirectoryName(outputPath); - string fileName = Path.GetFileName(fileList[i]); - string outputFile = Path.Combine(outputDirectory, fileName); + WildcardOperation(inputPath, recursiveSearch, (string filePath) => + { + string fileName = Path.GetFileName(filePath); + string outputFile = Path.Combine(outputDirectory, fileName); + bool shouldContinue = true; - if (File.Exists(outputFile)) - success = FileUtil.DeleteFileOrDirectory(outputFile); + if (File.Exists(outputFile)) + shouldContinue = FileUtility.Delete(outputFile, $"Could not overwrite existing file \"{outputFile}\".", out string errorString); - if (!success) - errorString = $"Could not overwrite existing file \"{outputPath}\"."; + if (shouldContinue) + fileOperation(filePath, outputFile); - FileUtil.CopyFileOrDirectory(fileList[i], outputFile); + return shouldContinue; + }); } - } - else if (success) - { - FileUtil.CopyFileOrDirectory(inputPath, outputPath); - } + else + { + if (overwrite && File.Exists(outputPath)) + success = FileUtility.Delete(outputPath, $"Could not overwrite existing file \"{outputPath}\".", out errorString); - if (!success && !string.IsNullOrEmpty(errorString)) - { - BuildNotificationList.instance.AddNotification(new BuildNotification( - BuildNotification.Category.Error, - "File Copy Failed.", errorString, - true, null)); + if (success) + fileOperation(inputPath, outputPath); + } } + + FileUtility.OperationComplete(success, $"File {(isCopy ? "Copy" : "Move")} Failed.", errorString); } private void Delete(string inputPath) @@ -201,45 +128,46 @@ private void Delete(string inputPath) string errorString = ""; bool containsWildcard = FileUtility.ContainsWildcard(inputPath); - if (!containsWildcard && File.Exists(inputPath)) - { - success = FileUtil.DeleteFileOrDirectory(inputPath); + success = ValidatePath(inputPath, FileUtility.PathType.Input, true, out errorString); - if (!success) - errorString = $"Could not delete file \"{inputPath}\"."; - } - else if (containsWildcard) + if (success) { - string inputDirectory = Path.GetDirectoryName(inputPath); + success = containsWildcard ? + WildcardOperation(inputPath, recursiveSearch, (string filePath) => + FileUtility.Delete(filePath, $"Could not delete file \"{filePath}\".", out string errorString) + ) : + FileUtility.Delete(inputPath, $"Could not delete file \"{inputPath}\".", out errorString); + } - SearchOption option = recursiveSearch ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly; - string[] fileList = Directory.GetFiles(inputDirectory, Path.GetFileName(inputPath), option); + FileUtility.OperationComplete(success, "File Delete Failed.", errorString); + } - for (int i = 0; i < fileList.Length; i++) - { - if (!success) - break; + private bool ValidatePath(string path, FileUtility.PathType pathType, bool checkForExistence, out string errorString) + { + return FileUtility.ValidatePath(path, pathType, checkForExistence, true, out errorString); + } - success = FileUtil.DeleteFileOrDirectory(fileList[i]); ; + private static bool WildcardOperation(string path, bool recursiveSearch, Func operation) + { + bool success = false; - if (!success) - errorString = $"Could not delete file \"{fileList[i]}\"."; - } - } - else - { - // Error. File does not exist. - success = false; - errorString = $"Input \"{inputPath}\" does not exist."; - } + string directory = Path.GetDirectoryName(path); + + SearchOption option = recursiveSearch ? + SearchOption.AllDirectories : + SearchOption.TopDirectoryOnly; - if (!success && !string.IsNullOrEmpty(errorString)) + string[] fileList = Directory.GetFiles(directory, Path.GetFileName(path), option); + + for (int i = 0; i < fileList.Length; i++) { - BuildNotificationList.instance.AddNotification(new BuildNotification( - BuildNotification.Category.Error, - "File Delete Failed.", errorString, - true, null)); + success = operation.Invoke(fileList[i]); + + if (!success) + break; } + + return success; } } } diff --git a/Editor/FileUtility/FileUtility.cs b/Editor/FileUtility/FileUtility.cs index b2b0d8e..33547e5 100644 --- a/Editor/FileUtility/FileUtility.cs +++ b/Editor/FileUtility/FileUtility.cs @@ -2,6 +2,7 @@ using System; using System.IO; using System.Text; +using UnityEditor; namespace SuperUnityBuild.BuildActions { @@ -14,11 +15,47 @@ public enum Operation Delete, } + public enum PathType + { + Input, + Output + } + public static bool ContainsWildcard(string inputPath) { return !string.IsNullOrEmpty(inputPath) && Path.GetFileNameWithoutExtension(inputPath).Contains("*"); } + public static bool Delete(string path, string failureErrorString, out string errorString) + { + errorString = ""; + + bool success = FileUtil.DeleteFileOrDirectory(path); + + if (!success) + errorString = failureErrorString; + + return success; + } + + public static Action GetCopyOrMoveAction(bool isCopy) + { + return isCopy ? + FileUtil.CopyFileOrDirectory : + FileUtil.MoveFileOrDirectory; + } + + public static void OperationComplete(bool success, string errorTitle, string errorString) + { + if (!success && !string.IsNullOrEmpty(errorString) && !string.IsNullOrEmpty(errorTitle)) + { + BuildNotificationList.instance.AddNotification(new BuildNotification( + BuildNotification.Category.Error, + errorTitle, errorString, + true, null)); + } + } + public static string ResolvePath(string prototype) { StringBuilder sb = new StringBuilder(prototype); @@ -31,11 +68,38 @@ public static string ResolvePath(string prototype) public static string ResolvePerBuildPath(string prototype, BuildReleaseType releaseType, BuildPlatform buildPlatform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, DateTime buildTime, string buildPath) { - return BuildProject.ResolvePath( - prototype - .Replace("$BUILDPATH", buildPath) - .Replace("$BASEPATH", BuildSettings.basicSettings.baseBuildFolder), - releaseType, buildPlatform, architecture, scriptingBackend, distribution, buildTime); + return prototype != null ? + BuildProject.ResolvePath( + prototype + .Replace("$BUILDPATH", buildPath) + .Replace("$BASEPATH", BuildSettings.basicSettings.baseBuildFolder), + releaseType, buildPlatform, architecture, scriptingBackend, distribution, buildTime) : + null; + } + + public static bool ValidatePath(string path, FileUtility.PathType pathType, bool checkForExistence, bool isFile, out string errorString) + { + errorString = ""; + + if (string.IsNullOrEmpty(path)) + { + errorString = $"{pathType} path not specified."; + return false; + } + + if ( + checkForExistence && + ( + (isFile && !File.Exists(path)) || + (!isFile && !Directory.Exists(path)) + ) + ) + { + errorString = $"{pathType} path \"{path}\" does not exist."; + return false; + } + + return true; } } } diff --git a/Editor/FileUtility/FolderOperation.cs b/Editor/FileUtility/FolderOperation.cs index 5b0f160..168ef73 100644 --- a/Editor/FileUtility/FolderOperation.cs +++ b/Editor/FileUtility/FolderOperation.cs @@ -20,20 +20,7 @@ public override void Execute() string resolvedInputPath = FileUtility.ResolvePath(inputPath); string resolvedOutputPath = FileUtility.ResolvePath(outputPath); - switch (operation) - { - case Operation.Copy: - Copy(resolvedInputPath, resolvedOutputPath); - break; - case Operation.Move: - Move(resolvedInputPath, resolvedOutputPath); - break; - case Operation.Delete: - Delete(resolvedInputPath); - break; - } - - AssetDatabase.Refresh(); + PerformOperation(resolvedInputPath, resolvedOutputPath); } public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) @@ -41,108 +28,74 @@ public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform string resolvedInputPath = FileUtility.ResolvePerBuildPath(inputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime, buildPath); string resolvedOutputPath = FileUtility.ResolvePerBuildPath(outputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime, buildPath); + PerformOperation(resolvedInputPath, resolvedOutputPath); + } + + protected override void DrawProperties(SerializedObject obj) + { + EditorGUILayout.PropertyField(obj.FindProperty("operation")); + EditorGUILayout.PropertyField(obj.FindProperty("inputPath")); + + if (operation != Operation.Delete) + EditorGUILayout.PropertyField(obj.FindProperty("outputPath")); + } + + private void PerformOperation(string inputPath, string outputPath) + { switch (operation) { case Operation.Copy: - Copy(resolvedInputPath, resolvedOutputPath); + Copy(inputPath, outputPath); break; case Operation.Move: - Move(resolvedInputPath, resolvedOutputPath); + Move(inputPath, outputPath); break; case Operation.Delete: - Delete(resolvedInputPath); + Delete(inputPath); break; } AssetDatabase.Refresh(); } - protected override void DrawProperties(SerializedObject obj) + private void Copy(string inputPath, string outputPath, bool overwrite = true) { - EditorGUILayout.PropertyField(obj.FindProperty("operation")); - EditorGUILayout.PropertyField(obj.FindProperty("inputPath")); - - if (operation != Operation.Delete) - EditorGUILayout.PropertyField(obj.FindProperty("outputPath")); + CopyOrMove(true, inputPath, outputPath, overwrite); } private void Move(string inputPath, string outputPath, bool overwrite = true) { - bool success = true; - string errorString = ""; - - if (!Directory.Exists(inputPath)) - { - // Error. Input does not exist. - success = false; - errorString = $"Input \"{inputPath}\" does not exist."; - } - - // Make sure that all parent directories in path are already created. - string parentPath = Path.GetDirectoryName(outputPath); - if (!Directory.Exists(parentPath)) - { - Directory.CreateDirectory(parentPath); - } - - if (overwrite && Directory.Exists(outputPath)) - { - // Delete previous output. - success = FileUtil.DeleteFileOrDirectory(outputPath); - - if (!success) - errorString = $"Could not overwrite existing folder \"{outputPath}\"."; - } - - FileUtil.MoveFileOrDirectory(inputPath, outputPath); - - if (!success && !string.IsNullOrEmpty(errorString)) - { - BuildNotificationList.instance.AddNotification(new BuildNotification( - BuildNotification.Category.Error, - "Folder Move Failed.", errorString, - true, null)); - } + CopyOrMove(false, inputPath, outputPath, overwrite); } - private void Copy(string inputPath, string outputPath, bool overwrite = true) + private void CopyOrMove(bool isCopy, string inputPath, string outputPath, bool overwrite = true) { + Action fileOperation = FileUtility.GetCopyOrMoveAction(isCopy); + bool success = true; string errorString = ""; - if (!Directory.Exists(inputPath)) - { - // Error. Input does not exist. - success = false; - errorString = $"Input \"{inputPath}\" does not exist."; - } + success = ValidatePath(inputPath, FileUtility.PathType.Input, true, out errorString); - // Make sure that all parent directories in path are already created. - string parentPath = Path.GetDirectoryName(outputPath); - if (!Directory.Exists(parentPath)) - { - Directory.CreateDirectory(parentPath); - } + if (success) + success = ValidatePath(outputPath, FileUtility.PathType.Output, false, out errorString); - if (success && overwrite && Directory.Exists(outputPath)) + if (success) { - // Delete previous output. - success = FileUtil.DeleteFileOrDirectory(outputPath); + // Make sure that all parent directories in path are already created. + string parentPath = Path.GetDirectoryName(outputPath); - if (!success) - errorString = $"Could not overwrite existing folder \"{outputPath}\"."; - } + if (!Directory.Exists(parentPath)) + Directory.CreateDirectory(parentPath); - if (success) - FileUtil.CopyFileOrDirectory(inputPath, outputPath); + if (overwrite && Directory.Exists(outputPath)) + success = FileUtility.Delete(outputPath, $"Could not overwrite existing folder \"{outputPath}\".", out errorString); - if (!success && !string.IsNullOrEmpty(errorString)) - { - BuildNotificationList.instance.AddNotification(new BuildNotification( - BuildNotification.Category.Error, - "Folder Copy Failed.", errorString, - true, null)); + if (success) + fileOperation(inputPath, outputPath); } + + FileUtility.OperationComplete(success, $"Folder {(isCopy ? "Copy" : "Move")} Failed.", errorString); } private void Delete(string inputPath) @@ -150,27 +103,17 @@ private void Delete(string inputPath) bool success = true; string errorString = ""; - if (Directory.Exists(inputPath)) - { - success = FileUtil.DeleteFileOrDirectory(inputPath); + success = ValidatePath(inputPath, FileUtility.PathType.Input, true, out errorString); - if (!success) - errorString = $"Could not delete folder \"{inputPath}\"."; - } - else - { - // Error. Path does not exist. - success = false; - errorString = $"Input \"{inputPath}\" does not exist."; - } + if (success) + success = FileUtility.Delete(inputPath, $"Could not delete folder \"{inputPath}\".", out errorString); - if (!success && !string.IsNullOrEmpty(errorString)) - { - BuildNotificationList.instance.AddNotification(new BuildNotification( - BuildNotification.Category.Error, - "Folder Delete Failed.", errorString, - true, null)); - } + FileUtility.OperationComplete(success, "Folder Delete Failed.", errorString); + } + + private bool ValidatePath(string path, FileUtility.PathType pathType, bool checkForExistence, out string errorString) + { + return FileUtility.ValidatePath(path, pathType, checkForExistence, false, out errorString); } } } From b0f20d2665a551da881145e5df61aa3de7269dcb Mon Sep 17 00:00:00 2001 From: Robin North Date: Thu, 18 May 2023 12:58:32 +0100 Subject: [PATCH 45/53] =?UTF-8?q?v3.0.0=20=F0=9F=9A=80=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 9 ++++++--- package.json | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef8b0fa..29bcbc5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,11 +5,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] + + +## [3.0.0] - 2023-05-16 ### Added -- **Breaking change:** Added support new per-build scripting backend functionality. +- **Breaking change:** Added support for new per-build scripting backend functionality. - Added author details and documentation, changelog and license URLs to package manifest. ### Changed @@ -89,7 +91,8 @@ This release includes all [previous commits][1.0.0] to the project, plus: - `OverrideDefines` action no longer ignore pre build defines. [PR #17](https://github.com/superunitybuild/buildactions/pull/17) -[unreleased]: https://github.com/superunitybuild/buildactions/compare/v2.2.0...HEAD +[unreleased]: https://github.com/superunitybuild/buildactions/compare/v3.0.0...HEAD +[3.0.0]: https://github.com/superunitybuild/buildactions/compare/v2.2.0...v3.0.0 [2.2.0]: https://github.com/superunitybuild/buildactions/compare/v2.1.1...v2.2.0 [2.1.1]: https://github.com/superunitybuild/buildactions/compare/v2.1.0...v2.1.1 [2.1.0]: https://github.com/superunitybuild/buildactions/compare/v2.0.0...v2.1.0 diff --git a/package.json b/package.json index 458320b..7395fa6 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "com.github.superunitybuild.buildactions", "displayName": "SuperUnityBuild BuildActions", - "version": "2.2.0", + "version": "3.0.0", "unity": "2020.3", "description": "BuildActions are one of the key components that make the SuperUnityBuild build automation tool flexible and powerful. Each one extends the capabilities of SuperUnityBuild and can be easily setup and customized to suit your needs", "changelogUrl": "CHANGELOG.md", From a2b771423f2f216a24fb10f217ea211ad31d1afc Mon Sep 17 00:00:00 2001 From: Robin North Date: Tue, 23 May 2023 14:30:26 +0100 Subject: [PATCH 46/53] Fixed minimum required SuperUnityBuild version --- CHANGELOG.md | 9 ++++++++- package.json | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 29bcbc5..0dc36d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +## [3.0.1] - 2023-05-23 + +### Fixed + +- Fixed minimum required SuperUnityBuild version. + ## [3.0.0] - 2023-05-16 ### Added @@ -91,7 +97,8 @@ This release includes all [previous commits][1.0.0] to the project, plus: - `OverrideDefines` action no longer ignore pre build defines. [PR #17](https://github.com/superunitybuild/buildactions/pull/17) -[unreleased]: https://github.com/superunitybuild/buildactions/compare/v3.0.0...HEAD +[unreleased]: https://github.com/superunitybuild/buildactions/compare/v3.0.1...HEAD +[3.0.1]: https://github.com/superunitybuild/buildactions/compare/v3.0.0...v3.0.1 [3.0.0]: https://github.com/superunitybuild/buildactions/compare/v2.2.0...v3.0.0 [2.2.0]: https://github.com/superunitybuild/buildactions/compare/v2.1.1...v2.2.0 [2.1.1]: https://github.com/superunitybuild/buildactions/compare/v2.1.0...v2.1.1 diff --git a/package.json b/package.json index 7395fa6..df262fc 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "documentationUrl": "https://github.com/superunitybuild/buildtool/wiki", "licenseUrl": "LICENSE.md", "dependencies": { - "com.github.superunitybuild.buildtool": "2.1.0" + "com.github.superunitybuild.buildtool": "6.0.0" }, "author": { "name": "SuperUnityBuild", From e3dfdf62094c30fc0871f1b0c7818ec0fd2346cf Mon Sep 17 00:00:00 2001 From: Robin North Date: Tue, 23 May 2023 14:30:49 +0100 Subject: [PATCH 47/53] =?UTF-8?q?v3.0.1=20=F0=9F=9A=80=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index df262fc..a4153dd 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "com.github.superunitybuild.buildactions", "displayName": "SuperUnityBuild BuildActions", - "version": "3.0.0", + "version": "3.0.1", "unity": "2020.3", "description": "BuildActions are one of the key components that make the SuperUnityBuild build automation tool flexible and powerful. Each one extends the capabilities of SuperUnityBuild and can be easily setup and customized to suit your needs", "changelogUrl": "CHANGELOG.md", From 5730b81d0dc7d5c6b4822ddb9c024dec290e9a41 Mon Sep 17 00:00:00 2001 From: Robin North Date: Fri, 2 Jun 2023 10:51:45 +0100 Subject: [PATCH 48/53] Standardised string token usage and added support for new Per-Build and Single Run tokens --- CHANGELOG.md | 10 +++++++++- Editor/AssetBundle/BuildAssetBundles.cs | 17 +++++++++-------- Editor/FileUtility/FileOperation.cs | 8 ++++---- Editor/FileUtility/FileUtility.cs | 22 ---------------------- Editor/FileUtility/FolderOperation.cs | 8 ++++---- Editor/OverrideDefines/OverrideDefines.cs | 4 ++-- Editor/ScriptRunner/ScriptRunner.cs | 11 +++++++---- Editor/ZipFile/ZipFileOperation.cs | 9 +++++---- 8 files changed, 40 insertions(+), 49 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0dc36d4..72f2c47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,15 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - +## [Unreleased] + +### Added + +- Added support for new Per-Build and Single Run string tokens. Per-Build actions have gained support for `$BASEPATH` and `$BUILDPATH`, whilst Single Run actions can now use `$VERSION`, `$BUILD`, `$YEAR`, `$MONTH`, `$DAY` and `$TIME`, with the time-based tokens corresponding to the time at which the action was run. + +### Changed + +- Standardised string token usage across Build Actions. ## [3.0.1] - 2023-05-23 diff --git a/Editor/AssetBundle/BuildAssetBundles.cs b/Editor/AssetBundle/BuildAssetBundles.cs index b76995f..e3a3838 100644 --- a/Editor/AssetBundle/BuildAssetBundles.cs +++ b/Editor/AssetBundle/BuildAssetBundles.cs @@ -65,22 +65,23 @@ protected override void DrawProperties(SerializedObject obj) #region Private Methods - private void Build(BuildPlatform platform, BuildArchitecture arch) + private void Build(BuildPlatform platform, BuildArchitecture architecture) { - if (!platform.enabled || !arch.enabled) + if (!platform.enabled || !architecture.enabled) return; // Resolve build path. - StringBuilder platformBundlePath = new StringBuilder(Path.Combine(baseBuildPath, innerBuildPath)); - platformBundlePath.Replace("$PLATFORM", BuildProject.SanitizeFolderName(platform.platformName)); - platformBundlePath.Replace("$ARCHITECTURE", BuildProject.SanitizeFolderName(arch.name)); + string platformBundlePath = TokensUtility.ResolveBuildConfigurationTokens( + Path.Combine(baseBuildPath, innerBuildPath), + null, platform, architecture, null, null, null + ); // Create build destination directory if it does not exist. - if (!Directory.Exists(platformBundlePath.ToString())) - Directory.CreateDirectory(platformBundlePath.ToString()); + if (!Directory.Exists(platformBundlePath)) + Directory.CreateDirectory(platformBundlePath); // Build AssetBundles. - BuildPipeline.BuildAssetBundles(platformBundlePath.ToString(), options, arch.target); + BuildPipeline.BuildAssetBundles(platformBundlePath, options, architecture.target); } #endregion diff --git a/Editor/FileUtility/FileOperation.cs b/Editor/FileUtility/FileOperation.cs index c3c23e4..89f05ad 100644 --- a/Editor/FileUtility/FileOperation.cs +++ b/Editor/FileUtility/FileOperation.cs @@ -18,16 +18,16 @@ public class FileOperation : BuildAction, IPreBuildAction, IPreBuildPerPlatformA public override void Execute() { - string resolvedInputPath = FileUtility.ResolvePath(inputPath); - string resolvedOutputPath = FileUtility.ResolvePath(outputPath); + string resolvedInputPath = BuildAction.ResolveExecuteTokens(inputPath); + string resolvedOutputPath = BuildAction.ResolveExecuteTokens(outputPath); PerformOperation(resolvedInputPath, resolvedOutputPath); } public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) { - string resolvedInputPath = FileUtility.ResolvePerBuildPath(inputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime, buildPath); - string resolvedOutputPath = FileUtility.ResolvePerBuildPath(outputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime, buildPath); + string resolvedInputPath = BuildAction.ResolvePerBuildExecuteTokens(inputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime, buildPath); + string resolvedOutputPath = BuildAction.ResolvePerBuildExecuteTokens(outputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime, buildPath); PerformOperation(resolvedInputPath, resolvedOutputPath); } diff --git a/Editor/FileUtility/FileUtility.cs b/Editor/FileUtility/FileUtility.cs index 33547e5..bd4b0f3 100644 --- a/Editor/FileUtility/FileUtility.cs +++ b/Editor/FileUtility/FileUtility.cs @@ -1,7 +1,6 @@ using SuperUnityBuild.BuildTool; using System; using System.IO; -using System.Text; using UnityEditor; namespace SuperUnityBuild.BuildActions @@ -56,27 +55,6 @@ public static void OperationComplete(bool success, string errorTitle, string err } } - public static string ResolvePath(string prototype) - { - StringBuilder sb = new StringBuilder(prototype); - - sb.Replace("$VERSION", BuildProject.SanitizeFolderName(BuildSettings.productParameters.buildVersion)); - sb.Replace("$BUILD", BuildSettings.productParameters.buildCounter.ToString()); - - return sb.ToString(); - } - - public static string ResolvePerBuildPath(string prototype, BuildReleaseType releaseType, BuildPlatform buildPlatform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, DateTime buildTime, string buildPath) - { - return prototype != null ? - BuildProject.ResolvePath( - prototype - .Replace("$BUILDPATH", buildPath) - .Replace("$BASEPATH", BuildSettings.basicSettings.baseBuildFolder), - releaseType, buildPlatform, architecture, scriptingBackend, distribution, buildTime) : - null; - } - public static bool ValidatePath(string path, FileUtility.PathType pathType, bool checkForExistence, bool isFile, out string errorString) { errorString = ""; diff --git a/Editor/FileUtility/FolderOperation.cs b/Editor/FileUtility/FolderOperation.cs index 168ef73..a8f2de9 100644 --- a/Editor/FileUtility/FolderOperation.cs +++ b/Editor/FileUtility/FolderOperation.cs @@ -17,16 +17,16 @@ public class FolderOperation : BuildAction, IPreBuildAction, IPreBuildPerPlatfor public override void Execute() { - string resolvedInputPath = FileUtility.ResolvePath(inputPath); - string resolvedOutputPath = FileUtility.ResolvePath(outputPath); + string resolvedInputPath = BuildAction.ResolveExecuteTokens(inputPath); + string resolvedOutputPath = BuildAction.ResolveExecuteTokens(outputPath); PerformOperation(resolvedInputPath, resolvedOutputPath); } public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) { - string resolvedInputPath = FileUtility.ResolvePerBuildPath(inputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime, buildPath); - string resolvedOutputPath = FileUtility.ResolvePerBuildPath(outputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime, buildPath); + string resolvedInputPath = BuildAction.ResolvePerBuildExecuteTokens(inputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime, buildPath); + string resolvedOutputPath = BuildAction.ResolvePerBuildExecuteTokens(outputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime, buildPath); PerformOperation(resolvedInputPath, resolvedOutputPath); } diff --git a/Editor/OverrideDefines/OverrideDefines.cs b/Editor/OverrideDefines/OverrideDefines.cs index 2415ab6..10b405e 100644 --- a/Editor/OverrideDefines/OverrideDefines.cs +++ b/Editor/OverrideDefines/OverrideDefines.cs @@ -19,7 +19,7 @@ public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform if (!string.IsNullOrEmpty(removeDefines)) { - string resolvedRemove = BuildProject.ResolvePath(removeDefines, releaseType, platform, architecture, scriptingBackend, distribution, buildTime); + string resolvedRemove = TokensUtility.ResolveBuildConfigurationTokens(removeDefines, releaseType, platform, architecture, scriptingBackend, distribution, buildTime); string[] splitRemove = resolvedRemove.Split(';'); for (int i = 0; i < splitRemove.Length; i++) @@ -31,7 +31,7 @@ public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform if (!string.IsNullOrEmpty(addDefines)) { - string resolvedAdd = BuildProject.ResolvePath(addDefines, releaseType, platform, architecture, scriptingBackend, distribution, buildTime); + string resolvedAdd = TokensUtility.ResolveBuildConfigurationTokens(addDefines, releaseType, platform, architecture, scriptingBackend, distribution, buildTime); if (mergedDefines.Length > 0) mergedDefines.Append(";"); diff --git a/Editor/ScriptRunner/ScriptRunner.cs b/Editor/ScriptRunner/ScriptRunner.cs index 730ea04..a3bcc70 100644 --- a/Editor/ScriptRunner/ScriptRunner.cs +++ b/Editor/ScriptRunner/ScriptRunner.cs @@ -14,15 +14,18 @@ public class ScriptRunner : BuildAction, IPreBuildAction, IPreBuildPerPlatformAc public override void Execute() { - RunScript(scriptPath, scriptArguments); + string resolvedScriptPath = BuildAction.ResolveExecuteTokens(scriptPath); + string resolvedScriptArguments = BuildAction.ResolveExecuteTokens(scriptArguments); + + RunScript(resolvedScriptPath, resolvedScriptArguments); } public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) { - string resolvedScriptPath = BuildProject.ResolvePath(scriptPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime); - string resolvedScriptArgs = BuildProject.ResolvePath(scriptArguments, releaseType, platform, architecture, scriptingBackend, distribution, buildTime); + string resolvedScriptPath = BuildAction.ResolvePerBuildExecuteTokens(scriptPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime, buildPath); + string resolvedScriptArguments = BuildAction.ResolvePerBuildExecuteTokens(scriptArguments, releaseType, platform, architecture, scriptingBackend, distribution, buildTime, buildPath); - RunScript(resolvedScriptPath, resolvedScriptArgs); + RunScript(resolvedScriptPath, resolvedScriptArguments); } private void RunScript(string scriptPath, string arguments) diff --git a/Editor/ZipFile/ZipFileOperation.cs b/Editor/ZipFile/ZipFileOperation.cs index 38ffed9..5eccbac 100644 --- a/Editor/ZipFile/ZipFileOperation.cs +++ b/Editor/ZipFile/ZipFileOperation.cs @@ -14,11 +14,12 @@ public class ZipFileOperation : BuildAction, IPreBuildAction, IPreBuildPerPlatfo public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, DateTime buildTime, ref UnityEditor.BuildOptions options, string configKey, string buildPath) { - string resolvedOutputPath = Path.Combine(outputPath.Replace("$BUILDPATH", buildPath), outputFileName); - resolvedOutputPath = BuildProject.ResolvePath(resolvedOutputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime); + string resolvedOutputPath = Path.Combine( + BuildAction.ResolvePerBuildExecuteTokens(outputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime, buildPath), + outputFileName + ); - string resolvedInputPath = inputPath.Replace("$BUILDPATH", buildPath); - resolvedInputPath = BuildProject.ResolvePath(resolvedInputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime); + string resolvedInputPath = BuildAction.ResolvePerBuildExecuteTokens(inputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime, buildPath); if (!resolvedOutputPath.EndsWith(".zip")) resolvedOutputPath += ".zip"; From df6fff42b0858ba699c145099355cfa3425de58f Mon Sep 17 00:00:00 2001 From: Robin North Date: Tue, 3 Oct 2023 16:11:00 +0100 Subject: [PATCH 49/53] =?UTF-8?q?v4.0.0=20=F0=9F=9A=80=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 7 +++++-- package.json | 6 +++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 72f2c47..41f01b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,9 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] + + +## [4.0.0] - 2023-10-03 ### Added @@ -105,7 +107,8 @@ This release includes all [previous commits][1.0.0] to the project, plus: - `OverrideDefines` action no longer ignore pre build defines. [PR #17](https://github.com/superunitybuild/buildactions/pull/17) -[unreleased]: https://github.com/superunitybuild/buildactions/compare/v3.0.1...HEAD +[unreleased]: https://github.com/superunitybuild/buildactions/compare/v4.0.0...HEAD +[4.0.0]: https://github.com/superunitybuild/buildactions/compare/v3.0.1...v4.0.0 [3.0.1]: https://github.com/superunitybuild/buildactions/compare/v3.0.0...v3.0.1 [3.0.0]: https://github.com/superunitybuild/buildactions/compare/v2.2.0...v3.0.0 [2.2.0]: https://github.com/superunitybuild/buildactions/compare/v2.1.1...v2.2.0 diff --git a/package.json b/package.json index a4153dd..f20eb2b 100644 --- a/package.json +++ b/package.json @@ -1,17 +1,17 @@ { "name": "com.github.superunitybuild.buildactions", "displayName": "SuperUnityBuild BuildActions", - "version": "3.0.1", + "version": "4.0.0", "unity": "2020.3", "description": "BuildActions are one of the key components that make the SuperUnityBuild build automation tool flexible and powerful. Each one extends the capabilities of SuperUnityBuild and can be easily setup and customized to suit your needs", "changelogUrl": "CHANGELOG.md", "documentationUrl": "https://github.com/superunitybuild/buildtool/wiki", "licenseUrl": "LICENSE.md", "dependencies": { - "com.github.superunitybuild.buildtool": "6.0.0" + "com.github.superunitybuild.buildtool": "7.0.0" }, "author": { "name": "SuperUnityBuild", "url": "https://github.com/superunitybuild" } -} +} \ No newline at end of file From c5442c17393ad95147d533a5fc4568fd8514eec0 Mon Sep 17 00:00:00 2001 From: cosformula Date: Tue, 10 Oct 2023 18:01:19 +0800 Subject: [PATCH 50/53] fix: zip action output file name not resolved --- Editor/ZipFile/ZipFileOperation.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Editor/ZipFile/ZipFileOperation.cs b/Editor/ZipFile/ZipFileOperation.cs index 5eccbac..e56f725 100644 --- a/Editor/ZipFile/ZipFileOperation.cs +++ b/Editor/ZipFile/ZipFileOperation.cs @@ -14,10 +14,8 @@ public class ZipFileOperation : BuildAction, IPreBuildAction, IPreBuildPerPlatfo public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, DateTime buildTime, ref UnityEditor.BuildOptions options, string configKey, string buildPath) { - string resolvedOutputPath = Path.Combine( - BuildAction.ResolvePerBuildExecuteTokens(outputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime, buildPath), - outputFileName - ); + string combinedOutputPath = Path.Combine(outputPath, outputFileName); + string resolvedOutputPath = BuildAction.ResolvePerBuildExecuteTokens(combinedOutputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime, buildPath); string resolvedInputPath = BuildAction.ResolvePerBuildExecuteTokens(inputPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime, buildPath); From 4824f3bbdf0a31695219dfe9aa7c60dcec5e1646 Mon Sep 17 00:00:00 2001 From: Robin North Date: Tue, 10 Oct 2023 12:07:55 +0100 Subject: [PATCH 51/53] Update CHANGELOG --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41f01b2..9a60e63 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - +## [Unreleased] + +### Fixed + +- Fixed output file name not being parsed for string tokens in `ZipFileOperation` action. (by [@cosformula](https://github.com/cosformula)) ## [4.0.0] - 2023-10-03 From 964500337e39c8f28ae3f0609e799c1984bda29b Mon Sep 17 00:00:00 2001 From: Robin North Date: Tue, 10 Oct 2023 12:09:26 +0100 Subject: [PATCH 52/53] =?UTF-8?q?v4.0.1=20=F0=9F=9A=80=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 7 +++++-- package.json | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a60e63..fa1c40d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,9 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] + + +## [4.0.1] - 2023-10-10 ### Fixed @@ -111,7 +113,8 @@ This release includes all [previous commits][1.0.0] to the project, plus: - `OverrideDefines` action no longer ignore pre build defines. [PR #17](https://github.com/superunitybuild/buildactions/pull/17) -[unreleased]: https://github.com/superunitybuild/buildactions/compare/v4.0.0...HEAD +[unreleased]: https://github.com/superunitybuild/buildactions/compare/v4.0.1...HEAD +[4.0.1]: https://github.com/superunitybuild/buildactions/compare/v4.0.0...v4.0.1 [4.0.0]: https://github.com/superunitybuild/buildactions/compare/v3.0.1...v4.0.0 [3.0.1]: https://github.com/superunitybuild/buildactions/compare/v3.0.0...v3.0.1 [3.0.0]: https://github.com/superunitybuild/buildactions/compare/v2.2.0...v3.0.0 diff --git a/package.json b/package.json index f20eb2b..06a32f8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "com.github.superunitybuild.buildactions", "displayName": "SuperUnityBuild BuildActions", - "version": "4.0.0", + "version": "4.0.1", "unity": "2020.3", "description": "BuildActions are one of the key components that make the SuperUnityBuild build automation tool flexible and powerful. Each one extends the capabilities of SuperUnityBuild and can be easily setup and customized to suit your needs", "changelogUrl": "CHANGELOG.md", @@ -14,4 +14,4 @@ "name": "SuperUnityBuild", "url": "https://github.com/superunitybuild" } -} \ No newline at end of file +} From 564bbe703cd58197936f1dfc9cf72e2a3554ac44 Mon Sep 17 00:00:00 2001 From: iatenothingbutriceforthreedays <8207025+iatenothingbutriceforthreedays@users.noreply.github.com> Date: Tue, 30 Apr 2024 20:44:55 +0800 Subject: [PATCH 53/53] add the most useful Resolution & Presentation options to PerBuildPlayerSettings --- .../PerBuildPlayerSettings.cs | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Editor/PerBuildPlayerSettings/PerBuildPlayerSettings.cs b/Editor/PerBuildPlayerSettings/PerBuildPlayerSettings.cs index 7f5f159..44f25b4 100644 --- a/Editor/PerBuildPlayerSettings/PerBuildPlayerSettings.cs +++ b/Editor/PerBuildPlayerSettings/PerBuildPlayerSettings.cs @@ -10,12 +10,33 @@ namespace SuperUnityBuild.BuildActions { public class PerBuildPlayerSettings : BuildAction, IPreBuildPerPlatformAction, IPostBuildPerPlatformAction, IPreBuildPerPlatformActionCanConfigureEditor { + [Header("Resolution")] + public FullScreenMode fullScreenMode; + public bool defaultIsNativeResolution; + public int defaultScreenWidth = 800; + public int defaultScreenHeight = 600; + public bool runInBackground; + [Header("Standalone Player Options")] + public bool resizableWindow; + public bool visibleInBackground = true; + public bool allowFullscreenSwitch; + [Header("Other Settings")] [Tooltip("Preloaded assets to set for this build")] public List PreloadedAssets = new List(); [Tooltip("Whether or not to preserve existing preloaded assets")] public bool PreservePreloadedAssets = true; public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, DateTime buildTime, ref BuildOptions options, string configKey, string buildPath) { + // Set resolution & presentation config + PlayerSettings.fullScreenMode = fullScreenMode; + PlayerSettings.defaultIsNativeResolution = defaultIsNativeResolution; + PlayerSettings.defaultScreenHeight = defaultScreenHeight; + PlayerSettings.defaultScreenWidth = defaultScreenWidth; + PlayerSettings.runInBackground = runInBackground; + PlayerSettings.resizableWindow = resizableWindow; + PlayerSettings.allowFullscreenSwitch = allowFullscreenSwitch; + PlayerSettings.visibleInBackground = visibleInBackground; + // Set preloaded assets Object[] preloadedAssets = PlayerSettings.GetPreloadedAssets();