From c594a4524df161876eb510e0c68e413d7eb12ce1 Mon Sep 17 00:00:00 2001 From: Adam Ralph Date: Sun, 4 Nov 2018 15:18:15 +0100 Subject: [PATCH] simplify inputs --- MinVer.Cli/Program.cs | 24 ++++++++++++------------ MinVer/Versioner.cs | 12 ++++++------ MinVer/build/MinVer.targets | 6 ++---- README.md | 8 ++++---- targets/Program.cs | 4 +++- 5 files changed, 27 insertions(+), 27 deletions(-) diff --git a/MinVer.Cli/Program.cs b/MinVer.Cli/Program.cs index 3a3b1aa8..b4906b48 100644 --- a/MinVer.Cli/Program.cs +++ b/MinVer.Cli/Program.cs @@ -12,39 +12,39 @@ static void Main(string[] args) app.HelpOption(); var buildMetadata = app.Option("-b|--build-metadata ", "The build metadata to append to the version.", CommandOptionType.SingleValue); - var minimumMajorMinor = app.Option("-m|--minimum-major-minor ", "The minimum major and minor version range. E.g. '2.0'.", CommandOptionType.SingleValue); + var majorMinor = app.Option("-m|--major-minor ", "The MAJOR.MINOR version range. E.g. '2.0'.", CommandOptionType.SingleValue); var path = app.Option("-p|--path ", "The path of the repository.", CommandOptionType.SingleValue); var tagPrefix = app.Option("-t|--tag-prefix ", "The tag prefix.", CommandOptionType.SingleValue); var verbose = app.Option("-v|--verbose", "Enable verbose logging.", CommandOptionType.NoValue); app.OnExecute(() => { - var minimumMajor = 0; - var minimumMinor = 0; + var major = 0; + var minor = 0; - var minimumMajorMinorValue = minimumMajorMinor.Value(); + var majorMinorValue = majorMinor.Value(); - if (!string.IsNullOrEmpty(minimumMajorMinorValue)) + if (!string.IsNullOrEmpty(majorMinorValue)) { - var numbers = minimumMajorMinorValue.Split('.'); + var numbers = majorMinorValue.Split('.'); if (numbers.Length > 2) { - throw new Exception($"More than one dot in minimum major and minor version range '{minimumMajorMinorValue}'."); + throw new Exception($"More than one dot in MAJOR.MINOR range '{majorMinorValue}'."); } - if (!int.TryParse(numbers[0], out minimumMajor)) + if (!int.TryParse(numbers[0], out major)) { - throw new Exception($"Invalid major version '{numbers[0]}' in minimum major and minor version range '{minimumMajorMinorValue}'."); + throw new Exception($"Invalid MAJOR '{numbers[0]}' in MAJOR.MINOR range '{majorMinorValue}'."); } - if (numbers.Length > 1 && !int.TryParse(numbers[1], out minimumMinor)) + if (numbers.Length > 1 && !int.TryParse(numbers[1], out minor)) { - throw new Exception($"Invalid minor version '{numbers[1]}' in minimum major and minor version range '{minimumMajorMinorValue}'."); + throw new Exception($"Invalid MINOR '{numbers[1]}' in MAJOR.MINOR range '{majorMinorValue}'."); } } - Console.Out.WriteLine(Versioner.GetVersion(path.Value() ?? ".", verbose.HasValue(), tagPrefix.Value(), minimumMajor, minimumMinor, buildMetadata.Value())); + Console.Out.WriteLine(Versioner.GetVersion(path.Value() ?? ".", verbose.HasValue(), tagPrefix.Value(), major, minor, buildMetadata.Value())); }); app.Execute(args); diff --git a/MinVer/Versioner.cs b/MinVer/Versioner.cs index c2c853a0..a5e718ee 100644 --- a/MinVer/Versioner.cs +++ b/MinVer/Versioner.cs @@ -9,7 +9,7 @@ namespace MinVer public static class Versioner { - public static Version GetVersion(string path, bool verbose, string tagPrefix, int minimumMajor, int minimumMinor, string buildMetadata) + public static Version GetVersion(string path, bool verbose, string tagPrefix, int major, int minor, string buildMetadata) { if (verbose) { @@ -42,7 +42,7 @@ public static Version GetVersion(string path, bool verbose, string tagPrefix, in { try { - return GetVersion(repo, verbose, tagPrefix, minimumMajor, minimumMinor, buildMetadata); + return GetVersion(repo, verbose, tagPrefix, major, minor, buildMetadata); } finally { @@ -55,7 +55,7 @@ public static Version GetVersion(string path, bool verbose, string tagPrefix, in return new Version(); } - private static Version GetVersion(Repository repo, bool verbose, string tagPrefix, int minimumMajor, int minimumMinor, string buildMetadata) + private static Version GetVersion(Repository repo, bool verbose, string tagPrefix, int major, int minor, string buildMetadata) { var commit = repo.Commits.FirstOrDefault(); @@ -132,13 +132,13 @@ private static Version GetVersion(Repository repo, bool verbose, string tagPrefi var selectedCandidate = orderedCandidates.Last(); Log($"Using{(verbose && orderedCandidates.Count > 1 ? " " : " ")}{selectedCandidate.ToString(tagWidth, versionWidth, heightWidth)}."); - var baseVersion = selectedCandidate.Version.IsBefore(minimumMajor, minimumMinor) ? - new Version(minimumMajor, minimumMinor) + var baseVersion = selectedCandidate.Version.IsBefore(major, minor) ? + new Version(major, minor) : selectedCandidate.Version; if (baseVersion != selectedCandidate.Version) { - Log($"Bumping version to {baseVersion} to satisify minimum major minor {minimumMajor}.{minimumMinor}."); + Log($"Bumping version to {baseVersion} to satisfy {major}.{minor} range."); } var calculatedVersion = baseVersion.WithHeight(selectedCandidate.Height).WithBuildMetadata(buildMetadata); diff --git a/MinVer/build/MinVer.targets b/MinVer/build/MinVer.targets index 395b0de7..30103e11 100644 --- a/MinVer/build/MinVer.targets +++ b/MinVer/build/MinVer.targets @@ -1,9 +1,7 @@ - $(MINVER_BUILD_METADATA) - $(MINVER_MINIMUM_MAJOR_MINOR) - 0.0 + 0.0 $(MINVER_TAG_PREFIX) $(MINVER_VERBOSE) false @@ -20,7 +18,7 @@ --verbose - + diff --git a/README.md b/README.md index 62e6d6f9..103d0fca 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Your project will be versioned according to the latest tag found in the commit h - The last tag on HEAD or it's ancestors which represents a [SemVer](https://semver.org) version number._\*_ - By how many commits HEAD is ahead of the tag (known as "height"). Or if no tag is found, by how commits HEAD is ahead of the first root commit found._\*\*_ -- An optional `MINVER_MINIMUM_MAJOR_MINOR` or `MinVerMinimumMajorMinor` environment variable or MSBuild property. +- An optional `MinVerMajorMinor` MSBuild property. \* _Each time the history diverges, the last tag is found on each path and the tag with the latest version number is used._ @@ -42,8 +42,8 @@ Your project will be versioned according to the latest tag found in the commit h #### HEAD version (final) -- If a `MINVER_MINIMUM_MAJOR_MINOR` or `MinVerMinimumMajorMinor` environment variable or MSBuild property is not set, then the HEAD version matches the candidate version. -- If a `MINVER_MINIMUM_MAJOR_MINOR` or `MinVerMinimumMajorMinor` environment variable or MSBuild property is set to `MAJOR.MINOR` or `MAJOR` (`MINOR` defaults to `0`), then: +- If a `MinVerMajorMinor` MSBuild property is not set, then the HEAD version matches the candidate version. +- If a `MinVerMajorMinor` MSBuild property is set to `MAJOR.MINOR` or `MAJOR` (`MINOR` defaults to `0`), then: - If the candidate version is in the `MAJOR.MINOR` version range or later, then the HEAD version matches the candidate version. - If the candidate version is in an earlier version range than `MAJOR.MINOR`, then the HEAD version is `MAJOR.MINOR.0-alpha.0.{height}`. @@ -69,7 +69,7 @@ That means MinVer is compatible with [Git Flow](https://nvie.com/posts/a-success ### Can I include build metadata in the version? -Yes! You can specify [build metadata](https://semver.org/#spec-item-10) in an environment variable or MSBuild property named `MINVER_BUILD_METADATA` or `MinVerBuildMetadata`. +Yes! You can specify [build metadata](https://semver.org/#spec-item-10) in an environment variable named `MINVER_BUILD_METADATA`. ### Can I use the version calculated by MinVer for other purposes? diff --git a/targets/Program.cs b/targets/Program.cs index c5b653a0..dd28f265 100644 --- a/targets/Program.cs +++ b/targets/Program.cs @@ -64,9 +64,11 @@ public static Task Main(string[] args) } Environment.SetEnvironmentVariable("MINVER_BUILD_METADATA", "build.42", EnvironmentVariableTarget.Process); - Environment.SetEnvironmentVariable("MINVER_MINIMUM_MAJOR_MINOR", "2.0", EnvironmentVariableTarget.Process); Environment.SetEnvironmentVariable("MINVER_VERBOSE", "true", EnvironmentVariableTarget.Process); + // normally set via an MSBuild property + Environment.SetEnvironmentVariable("MinVerMajorMinor", "2.0", EnvironmentVariableTarget.Process); + DeletePackages(); await RunAsync("dotnet", "build --no-restore", path);