/// <summary> /// <p>Minimalistic versioning using Git tags.</p> /// <p>For more details, visit the <a href="https://github.com/adamralph/minver">official website</a>.</p> /// </summary> /// <remarks> /// <p>This is a <a href="http://www.nuke.build/docs/authoring-builds/cli-tools.html#fluent-apis">CLI wrapper with fluent API</a> that allows to modify the following arguments:</p> /// <ul> /// <li><c>--auto-increment</c> via <see cref="MinVerSettings.AutoIncrement"/></li> /// <li><c>--build-metadata</c> via <see cref="MinVerSettings.BuildMetadata"/></li> /// <li><c>--default-pre-release-phase</c> via <see cref="MinVerSettings.DefaultPreReleasePhase"/></li> /// <li><c>--minimum-major-minor</c> via <see cref="MinVerSettings.MinimumMajorMinor"/></li> /// <li><c>--tag-prefix</c> via <see cref="MinVerSettings.TagPrefix"/></li> /// <li><c>--verbosity</c> via <see cref="MinVerSettings.Verbosity"/></li> /// </ul> /// </remarks> public static (MinVer Result, IReadOnlyCollection <Output> Output) MinVer(MinVerSettings toolSettings = null) { toolSettings = toolSettings ?? new MinVerSettings(); using var process = ProcessTasks.StartProcess(toolSettings); process.AssertZeroExitCode(); return(GetResult(process, toolSettings), process.Output); }
private static MinVer GetResult(IProcess process, MinVerSettings toolSettings) { var versionString = process.Output.Select(x => x.Text).Single(x => !x.StartsWith("MinVer:")); var version = new MinVer { MinVerVersion = versionString, MinVerMajor = versionString.Split('.')[0], MinVerMinor = versionString.Split('.')[1], MinVerPatch = versionString.Split('.')[2].Split('-')[0].Split('+')[0], MinVerPreRelease = versionString.Split('+')[0].Contains('-') ? versionString.Split('+')[0].Split(new[] { '-' }, count: 2)[1] : null, MinVerBuildMetadata = versionString.Contains('+') ? versionString.Split(new[] { '+' }, count: 2)[1] : null }; version.AssemblyVersion = $"{version.MinVerMajor}.0.0.0"; version.FileVersion = $"{version.MinVerMajor}.{version.MinVerMinor}.{version.MinVerPatch}.0"; version.PackageVersion = versionString; version.Version = versionString; return(version); }