From 6f1d03d8a80562dadb2e47bef7e41e405b557f08 Mon Sep 17 00:00:00 2001 From: Webber Date: Wed, 22 Apr 2020 00:08:08 +0200 Subject: [PATCH] Refactor Builder --- .../Assembly-CSharp-Editor.csproj | 3 + .../Assets/Editor/Builder.cs | 123 ++---------------- .../Assets/Editor/Input.meta | 3 + .../Assets/Editor/Reporting.meta | 3 + .../Editor/Versioning/VersionApplicator.cs | 2 +- 5 files changed, 20 insertions(+), 114 deletions(-) create mode 100644 action/default-build-script/Assets/Editor/Input.meta create mode 100644 action/default-build-script/Assets/Editor/Reporting.meta diff --git a/action/default-build-script/Assembly-CSharp-Editor.csproj b/action/default-build-script/Assembly-CSharp-Editor.csproj index 57c42a50..9b76da4d 100644 --- a/action/default-build-script/Assembly-CSharp-Editor.csproj +++ b/action/default-build-script/Assembly-CSharp-Editor.csproj @@ -57,7 +57,10 @@ + + + diff --git a/action/default-build-script/Assets/Editor/Builder.cs b/action/default-build-script/Assets/Editor/Builder.cs index 9cbed67c..62eeaad1 100644 --- a/action/default-build-script/Assets/Editor/Builder.cs +++ b/action/default-build-script/Assets/Editor/Builder.cs @@ -1,87 +1,20 @@ -using System; +using System; using System.Collections.Generic; -using System.IO; using System.Linq; +using UnityBuilderAction.Input; +using UnityBuilderAction.Reporting; +using UnityBuilderAction.Versioning; using UnityEditor; using UnityEditor.Build.Reporting; -using UnityEngine; namespace UnityBuilderAction { static class Builder { - private static string EOL = Environment.NewLine; - - private static void ParseCommandLineArguments(out Dictionary providedArguments) - { - providedArguments = new Dictionary(); - string[] args = Environment.GetCommandLineArgs(); - - Console.WriteLine( - $"{EOL}" + - $"###########################{EOL}" + - $"# Parsing settings #{EOL}" + - $"###########################{EOL}" + - $"{EOL}" - ); - - // 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('-'); - - // Parse optional value - bool flagHasValue = next < args.Length && !args[next].StartsWith("-"); - string value = flagHasValue ? args[next].TrimStart('-') : ""; - - // Assign - Console.WriteLine($"Found flag \"{flag}\" with value \"{value}\"."); - providedArguments.Add(flag, value); - } - } - - 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; - } - public static void BuildProject() { // Gather values from args - var options = GetValidatedOptions(); + var options = ArgumentsParser.GetValidatedOptions(); // Gather values from project var scenes = EditorBuildSettings.scenes.Where(scene => scene.enabled).Select(s => s.path).ToArray(); @@ -93,55 +26,19 @@ namespace UnityBuilderAction target = (BuildTarget) Enum.Parse(typeof(BuildTarget), options["buildTarget"]), }; + // Set version for this build + VersionApplicator.SetVersion(options["versioning"], options["version"]); + // Perform build BuildReport buildReport = BuildPipeline.BuildPlayer(buildOptions); // Summary BuildSummary summary = buildReport.summary; - ReportSummary(summary); + StdOutReporter.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); - } + StdOutReporter.ExitWithResult(result); } } } diff --git a/action/default-build-script/Assets/Editor/Input.meta b/action/default-build-script/Assets/Editor/Input.meta new file mode 100644 index 00000000..dc568c7d --- /dev/null +++ b/action/default-build-script/Assets/Editor/Input.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b6e5ef18d769419d887b56665969442b +timeCreated: 1587503329 \ No newline at end of file diff --git a/action/default-build-script/Assets/Editor/Reporting.meta b/action/default-build-script/Assets/Editor/Reporting.meta new file mode 100644 index 00000000..104ba636 --- /dev/null +++ b/action/default-build-script/Assets/Editor/Reporting.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 166f919334c44e7a80ae916667974e7d +timeCreated: 1587503566 \ No newline at end of file diff --git a/action/default-build-script/Assets/Editor/Versioning/VersionApplicator.cs b/action/default-build-script/Assets/Editor/Versioning/VersionApplicator.cs index 092bb9bc..8f5515bc 100644 --- a/action/default-build-script/Assets/Editor/Versioning/VersionApplicator.cs +++ b/action/default-build-script/Assets/Editor/Versioning/VersionApplicator.cs @@ -14,7 +14,7 @@ namespace UnityBuilderAction.Versioning SemanticClassic, } - public static void SetVersionForBuild(string strategy, [CanBeNull] string version) + public static void SetVersion(string strategy, [CanBeNull] string version) { if (!Enum.TryParse(strategy, out Strategy validatedStrategy)) { throw new Exception($"Invalid versioning argument provided. {strategy} is not a valid strategy.");