unity-builder/action/default-build-script/Assets/Editor/Versioning/VersionApplicator.cs

65 lines
1.4 KiB
C#
Raw Normal View History

2020-04-21 22:05:46 +00:00
using System;
using JetBrains.Annotations;
using UnityEditor;
namespace UnityBuilderAction.Versioning
{
public class VersionApplicator
{
enum Strategy
{
None,
Custom,
2020-04-22 19:36:45 +00:00
Semantic,
Tag,
2020-04-21 22:05:46 +00:00
}
2020-04-21 22:08:08 +00:00
public static void SetVersion(string strategy, [CanBeNull] string version)
2020-04-21 22:05:46 +00:00
{
if (!Enum.TryParse<Strategy>(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;
2020-04-22 19:36:45 +00:00
case Strategy.Semantic:
2020-04-21 22:05:46 +00:00
ApplySemanticCommitVersion();
return;
2020-04-22 19:36:45 +00:00
case Strategy.Tag:
ApplyVersionFromCurrentTag();
2020-04-21 22:05:46 +00:00
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);
}
2020-04-22 19:36:45 +00:00
static void ApplyVersionFromCurrentTag()
2020-04-21 22:05:46 +00:00
{
2020-04-22 19:36:45 +00:00
string version = Git.GetTagVersion();
2020-04-21 22:05:46 +00:00
Apply(version);
}
static void Apply(string version)
{
PlayerSettings.bundleVersion = version;
}
}
}