From abf39fb04498a1d9da6005949d215a3369667784 Mon Sep 17 00:00:00 2001 From: Webber Date: Sat, 7 Dec 2019 23:43:37 +0100 Subject: [PATCH] Rider-project for Builder folder --- Builder/.gitignore | 56 +++++++ Builder/Builder.cs | 233 +++++++++++++++-------------- Builder/Builder.cs.meta | 3 - Builder/Properties/AssemblyInfo.cs | 35 +++++ Builder/UnityBuilderAction.csproj | 57 +++++++ 5 files changed, 266 insertions(+), 118 deletions(-) create mode 100644 Builder/.gitignore delete mode 100644 Builder/Builder.cs.meta create mode 100644 Builder/Properties/AssemblyInfo.cs create mode 100644 Builder/UnityBuilderAction.csproj diff --git a/Builder/.gitignore b/Builder/.gitignore new file mode 100644 index 00000000..46ea930d --- /dev/null +++ b/Builder/.gitignore @@ -0,0 +1,56 @@ +# +# Note: Non default ignore file, as this only tests Builder script. +# + +[Ll]ibrary/ +[Tt]emp/ +[Oo]bj/ +[Bb]uild/ +[Bb]uilds/ +[Ll]ogs/ + +# Additional ignores +[Bb]in/ + +# Uncomment this line if you wish to ignore the asset store tools plugin +# [Aa]ssets/AssetStoreTools* + +# IDEs +.vs/ +.idea/ + +# Gradle cache directory +.gradle/ + +# Autogenerated VS/MD/Consulo solution and project files +ExportedObj/ +.consulo/ +#*.csproj +*.unityproj +*.sln +*.suo +*.tmp +*.user +*.userprefs +*.pidb +*.booproj +*.svd +*.pdb +*.mdb +*.opendb +*.VC.db + +# Unity3D generated meta files +*.pidb.meta +*.pdb.meta +*.mdb.meta + +# Unity3D generated file on crash reports +sysinfo.txt + +# Builds +*.apk +*.unitypackage + +# Crashlytics generated file +crashlytics-build.properties diff --git a/Builder/Builder.cs b/Builder/Builder.cs index fa062ccc..ac987e69 100644 --- a/Builder/Builder.cs +++ b/Builder/Builder.cs @@ -6,139 +6,142 @@ using UnityEditor; using UnityEditor.Build.Reporting; using UnityEngine; -static class Builder +namespace UnityBuilderAction { - private static string EOL = Environment.NewLine; - - private static void ParseCommandLineArguments(out Dictionary providedArguments) + static class Builder { - providedArguments = new Dictionary(); - string[] args = Environment.GetCommandLineArgs(); + private static string EOL = Environment.NewLine; - Console.WriteLine( - $"{EOL}" + - $"###########################{EOL}" + - $"# Parsing settings #{EOL}" + - $"###########################{EOL}" + - $"{EOL}" - ); + private static void ParseCommandLineArguments(out Dictionary providedArguments) + { + providedArguments = new Dictionary(); + string[] args = Environment.GetCommandLineArgs(); - // Extract flags with optional values - for (int current = 0, next = 1; current < args.Length; current++, next++) { - // Parse flag - bool isFlag = args[current].StartsWith("-"); - if (!isFlag) continue; - string flag = args[current].TrimStart('-'); + Console.WriteLine( + $"{EOL}" + + $"###########################{EOL}" + + $"# Parsing settings #{EOL}" + + $"###########################{EOL}" + + $"{EOL}" + ); - // Parse optional value - bool flagHasValue = next < args.Length && !args[next].StartsWith("-"); - string value = flagHasValue ? args[next].TrimStart('-') : ""; + // Extract flags with optional values + for (int current = 0, next = 1; current < args.Length; current++, next++) { + // Parse flag + bool isFlag = args[current].StartsWith("-"); + if (!isFlag) continue; + string flag = args[current].TrimStart('-'); - // Assign - Console.WriteLine($"Found flag \"{flag}\" with value \"{value}\"."); - providedArguments.Add(flag, value); - } - } + // Parse optional value + bool flagHasValue = next < args.Length && !args[next].StartsWith("-"); + string value = flagHasValue ? args[next].TrimStart('-') : ""; - private static Dictionary GetValidatedOptions() - { - ParseCommandLineArguments(out var validatedOptions); - - if (!validatedOptions.TryGetValue("projectPath", out var projectPath)) { - Console.WriteLine("Missing argument -projectPath"); - EditorApplication.Exit(110); + // Assign + Console.WriteLine($"Found flag \"{flag}\" with value \"{value}\"."); + providedArguments.Add(flag, value); + } } - if (!validatedOptions.TryGetValue("buildTarget", out var buildTarget)) { - Console.WriteLine("Missing argument -buildTarget"); - EditorApplication.Exit(120); + private static Dictionary GetValidatedOptions() + { + ParseCommandLineArguments(out var validatedOptions); + + if (!validatedOptions.TryGetValue("projectPath", out var projectPath)) { + Console.WriteLine("Missing argument -projectPath"); + EditorApplication.Exit(110); + } + + if (!validatedOptions.TryGetValue("buildTarget", out var buildTarget)) { + Console.WriteLine("Missing argument -buildTarget"); + EditorApplication.Exit(120); + } + + if (!Enum.IsDefined(typeof(BuildTarget), buildTarget)) { + EditorApplication.Exit(121); + } + + if (!validatedOptions.TryGetValue("customBuildPath", out var customBuildPath)) { + Console.WriteLine("Missing argument -customBuildPath"); + EditorApplication.Exit(130); + } + + string defaultCustomBuildName = "TestBuild"; + if (!validatedOptions.TryGetValue("customBuildName", out var customBuildName)) { + Console.WriteLine($"Missing argument -customBuildName, defaulting to {defaultCustomBuildName}."); + validatedOptions.Add("customBuildName", defaultCustomBuildName); + } + else if (customBuildName == "") { + Console.WriteLine($"Invalid argument -customBuildName, defaulting to {defaultCustomBuildName}."); + validatedOptions.Add("customBuildName", defaultCustomBuildName); + } + + return validatedOptions; } - if (!Enum.IsDefined(typeof(BuildTarget), buildTarget)) { - EditorApplication.Exit(121); + public static void BuildProject() + { + // Gather values from args + var options = GetValidatedOptions(); + + // Gather values from project + var scenes = EditorBuildSettings.scenes.Where(scene => scene.enabled).Select(s => s.path).ToArray(); + + // Define BuildPlayer Options + var buildOptions = new BuildPlayerOptions { + scenes = scenes, + locationPathName = options["customBuildPath"], + target = (BuildTarget) Enum.Parse(typeof(BuildTarget), options["buildTarget"]), + }; + + // Perform build + BuildReport buildReport = BuildPipeline.BuildPlayer(buildOptions); + + // Summary + BuildSummary summary = buildReport.summary; + ReportSummary(summary); + + // Result + BuildResult result = summary.result; + ExitWithResult(result); } - if (!validatedOptions.TryGetValue("customBuildPath", out var customBuildPath)) { - Console.WriteLine("Missing argument -customBuildPath"); - EditorApplication.Exit(130); + private static void ReportSummary(BuildSummary summary) + { + Console.WriteLine( + $"{EOL}" + + $"###########################{EOL}" + + $"# Build results #{EOL}" + + $"###########################{EOL}" + + $"{EOL}" + + $"Duration: {summary.totalTime.ToString()}{EOL}" + + $"Warnings: {summary.totalWarnings.ToString()}{EOL}" + + $"Errors: {summary.totalErrors.ToString()}{EOL}" + + $"Size: {summary.totalSize.ToString()} bytes{EOL}" + + $"{EOL}" + ); } - string defaultCustomBuildName = "TestBuild"; - if (!validatedOptions.TryGetValue("customBuildName", out var customBuildName)) { - Console.WriteLine($"Missing argument -customBuildName, defaulting to {defaultCustomBuildName}."); - validatedOptions.Add("customBuildName", defaultCustomBuildName); - } - else if (customBuildName == "") { - Console.WriteLine($"Invalid argument -customBuildName, defaulting to {defaultCustomBuildName}."); - validatedOptions.Add("customBuildName", defaultCustomBuildName); - } + private static void ExitWithResult(BuildResult result) + { + if (result == BuildResult.Succeeded) { + Console.WriteLine("Build succeeded!"); + EditorApplication.Exit(0); + } - return validatedOptions; - } + if (result == BuildResult.Failed) { + Console.WriteLine("Build failed!"); + EditorApplication.Exit(101); + } - public static void BuildProject() - { - // Gather values from args - var options = GetValidatedOptions(); + if (result == BuildResult.Cancelled) { + Console.WriteLine("Build cancelled!"); + EditorApplication.Exit(102); + } - // Gather values from project - var scenes = EditorBuildSettings.scenes.Where(scene => scene.enabled).Select(s => s.path).ToArray(); - - // Define BuildPlayer Options - var buildOptions = new BuildPlayerOptions { - scenes = scenes, - locationPathName = options["customBuildPath"], - target = (BuildTarget) Enum.Parse(typeof(BuildTarget), options["buildTarget"]), - }; - - // Perform build - BuildReport buildReport = BuildPipeline.BuildPlayer(buildOptions); - - // Summary - BuildSummary summary = buildReport.summary; - ReportSummary(summary); - - // Result - BuildResult result = summary.result; - ExitWithResult(result); - } - - private static void ReportSummary(BuildSummary summary) - { - Console.WriteLine( - $"{EOL}" + - $"###########################{EOL}" + - $"# Build results #{EOL}" + - $"###########################{EOL}" + - $"{EOL}" + - $"Duration: {summary.totalTime.ToString()}{EOL}" + - $"Warnings: {summary.totalWarnings.ToString()}{EOL}" + - $"Errors: {summary.totalErrors.ToString()}{EOL}" + - $"Size: {summary.totalSize.ToString()} bytes{EOL}" + - $"{EOL}" - ); - } - - private static void ExitWithResult(BuildResult result) - { - if (result == BuildResult.Succeeded) { - Console.WriteLine("Build succeeded!"); - EditorApplication.Exit(0); - } - - if (result == BuildResult.Failed) { - Console.WriteLine("Build failed!"); - EditorApplication.Exit(101); - } - - if (result == BuildResult.Cancelled) { - Console.WriteLine("Build cancelled!"); - EditorApplication.Exit(102); - } - - if (result == BuildResult.Unknown) { - Console.WriteLine("Build result is unknown!"); - EditorApplication.Exit(103); + if (result == BuildResult.Unknown) { + Console.WriteLine("Build result is unknown!"); + EditorApplication.Exit(103); + } } } } diff --git a/Builder/Builder.cs.meta b/Builder/Builder.cs.meta deleted file mode 100644 index 6ef16bd1..00000000 --- a/Builder/Builder.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: dc057061ce9f406aa6b57a62d67fe9c0 -timeCreated: 1575145310 \ No newline at end of file diff --git a/Builder/Properties/AssemblyInfo.cs b/Builder/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..1d40acd7 --- /dev/null +++ b/Builder/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("UnityBuilderAction")] +[assembly: AssemblyDescription("Builder script for Unity Builder action")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("UnityBuilderAction")] +[assembly: AssemblyCopyright("Copyright © 2019-present")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("031F5EE1-35CE-4F77-975A-7E326F898185")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Builder/UnityBuilderAction.csproj b/Builder/UnityBuilderAction.csproj new file mode 100644 index 00000000..1a8b4d3e --- /dev/null +++ b/Builder/UnityBuilderAction.csproj @@ -0,0 +1,57 @@ + + + + + Debug + AnyCPU + {031F5EE1-35CE-4F77-975A-7E326F898185} + Library + Properties + UnityBuilderAction + UnityBuilderAction + v4.8 + 512 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + ..\..\..\Program Files\Unity\2019.2.11f1\Editor\Data\Managed\UnityEditor.dll + + + C:\Program Files\Unity\2019.2.11f1\Editor\Data\Managed\UnityEngine.dll + + + + + + + + +