From 5ee9c59113c1a78913939ffc46c4cef4014b5871 Mon Sep 17 00:00:00 2001 From: Webber Date: Wed, 22 Apr 2020 00:05:46 +0200 Subject: [PATCH] Create VersionApplicator --- .../Assets/Editor/Versioning/Git.cs | 16 +++++ .../Editor/Versioning/VersionApplicator.cs | 64 +++++++++++++++++++ .../Versioning/VersionApplicator.cs.meta | 3 + 3 files changed, 83 insertions(+) create mode 100644 action/default-build-script/Assets/Editor/Versioning/VersionApplicator.cs create mode 100644 action/default-build-script/Assets/Editor/Versioning/VersionApplicator.cs.meta diff --git a/action/default-build-script/Assets/Editor/Versioning/Git.cs b/action/default-build-script/Assets/Editor/Versioning/Git.cs index 7c060019..c4850e52 100644 --- a/action/default-build-script/Assets/Editor/Versioning/Git.cs +++ b/action/default-build-script/Assets/Editor/Versioning/Git.cs @@ -30,6 +30,22 @@ namespace UnityBuilderAction.Versioning return version; } + /// + /// Get the version of the current tag. + /// + /// Output Format: + /// #.* (where # is the major version and * can be any number of any type of character) + /// + /// + public static string GenerateSemanticClassicVersion() + { + string version = Run(@"tag --points-at HEAD | grep v[0-9]*"); + + version = version.Substring(1); + + return version; + } + /// /// Get the total number of commits. /// diff --git a/action/default-build-script/Assets/Editor/Versioning/VersionApplicator.cs b/action/default-build-script/Assets/Editor/Versioning/VersionApplicator.cs new file mode 100644 index 00000000..092bb9bc --- /dev/null +++ b/action/default-build-script/Assets/Editor/Versioning/VersionApplicator.cs @@ -0,0 +1,64 @@ +using System; +using JetBrains.Annotations; +using UnityEditor; + +namespace UnityBuilderAction.Versioning +{ + public class VersionApplicator + { + enum Strategy + { + None, + Custom, + SemanticCommit, + SemanticClassic, + } + + public static void SetVersionForBuild(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."); + } + + switch (validatedStrategy) { + case Strategy.None: + return; + case Strategy.Custom: + ApplyCustomVersion(version); + return; + case Strategy.SemanticCommit: + ApplySemanticCommitVersion(); + return; + case Strategy.SemanticClassic: + ApplySemanticClassicVersion(); + return; + default: + throw new NotImplementedException("Version strategy has not been implemented."); + } + } + + static void ApplyCustomVersion(string version) + { + Apply(version); + } + + static void ApplySemanticCommitVersion() + { + string version = Git.GenerateSemanticCommitVersion(); + + Apply(version); + } + + static void ApplySemanticClassicVersion() + { + string version = Git.GenerateSemanticClassicVersion(); + + Apply(version); + } + + static void Apply(string version) + { + PlayerSettings.bundleVersion = version; + } + } +} diff --git a/action/default-build-script/Assets/Editor/Versioning/VersionApplicator.cs.meta b/action/default-build-script/Assets/Editor/Versioning/VersionApplicator.cs.meta new file mode 100644 index 00000000..a433d24c --- /dev/null +++ b/action/default-build-script/Assets/Editor/Versioning/VersionApplicator.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 30483367ddc84699a0da377ccb93769a +timeCreated: 1587504315 \ No newline at end of file