Skip to content

Commit

Permalink
add dotnet-minver
Browse files Browse the repository at this point in the history
  • Loading branch information
adamralph committed Nov 14, 2018
1 parent f29c978 commit a76dfcd
Show file tree
Hide file tree
Showing 7 changed files with 133 additions and 12 deletions.
15 changes: 11 additions & 4 deletions MinVer.Tasks/Logger.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ public void Info(string message)
}
}

public static void WarnInvalidRepoPath(string path, Version version) =>
Warn(1001, $"'{path}' is not a valid repository or working directory. Using default version: {version}");
public void WarnInvalidRepoPath(string path, Version version) =>
this.Warn(1001, $"'{path}' is not a valid repository or working directory. Using default version: {version}");

public static void ErrorInvalidRepoPath(string path) =>
Error(1002, $"Invalid repository path '{path}'. Directory does not exist.");
Expand All @@ -44,9 +44,16 @@ public static void ErrorInvalidMajorMinorRange(string majorMinor) =>
Error(1003, $"Invalid MAJOR.MINOR range '{majorMinor}'.");

public static void ErrorInvalidVerbosityLevel(string verbosity) =>
Error(1004, $"Invalid verbosity level '{verbosity}'. Valid levels are quiet, minimal, normal, detailed, and diagnostic");
Error(1004, $"Invalid verbosity level '{verbosity}'. Valid levels are quiet, minimal, normal, detailed, and diagnostic.");

private static void Warn(int code, string message) => Message($"warning MINVER{code:D4} : {message}");
private void Warn(int code, string message)
{
// conditional isn't really required but it gets rid of a compiler warning
if (this.level >= Verbosity.Quiet)
{
Message($"warning MINVER{code:D4} : {message}");
}
}

private static void Error(int code, string message) => Message($"error MINVER{code:D4} : {message}");

Expand Down
19 changes: 12 additions & 7 deletions MinVer.Tasks/Program.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
namespace MinVer
{
using System;
using System.Linq;
using System.IO;
using McMaster.Extensions.CommandLineUtils;

Expand All @@ -12,11 +13,13 @@ static int Main(string[] args)

app.HelpOption();

var buildMetadata = app.Option("--build-metadata <BUILD_METADATA>", "", CommandOptionType.SingleValue);
var majorMinor = app.Option("--major-minor <RANGE>", "", CommandOptionType.SingleValue);
var repo = app.Option("--repo <PATH>", "", CommandOptionType.SingleValue);
var tagPrefix = app.Option("--tag-prefix <TAG_PREFIX>", "", CommandOptionType.SingleValue);
var verbosity = app.Option("--verbosity <LEVEL>", "", CommandOptionType.SingleValue);
var levels = Enum.GetValues(typeof(Verbosity)).Cast<Verbosity>().OrderBy(_ => _).Select(level => level.ToString().ToLowerInvariant()).ToList();

var buildMetadata = app.Option("-b|--build-metadata <BUILD_METADATA>", "", CommandOptionType.SingleValue);
var majorMinor = app.Option("-m|--major-minor <RANGE>", "", CommandOptionType.SingleValue);
var repo = app.Option("-r|--repo <PATH>", "Repository or working directory.", CommandOptionType.SingleValue);
var tagPrefix = app.Option("-t|--tag-prefix <TAG_PREFIX>", "", CommandOptionType.SingleValue);
var verbosity = app.Option("-v|--verbosity <LEVEL>", $"{string.Join(", ", levels.Take(levels.Count - 1))}, or {levels.Last()}", CommandOptionType.SingleValue);

app.OnExecute(() =>
{
Expand Down Expand Up @@ -64,18 +67,20 @@ private static bool TryParse(string repo, string majorMinor, string verbosity, o

public static Version GetVersion(string path, string tagPrefix, MajorMinor range, string buildMetadata, Verbosity level)
{
var log = new Logger(level);

if (!RepositoryEx.TryCreateRepo(path, out var repo))
{
var version = new Version();

Logger.WarnInvalidRepoPath(path, version);
log.WarnInvalidRepoPath(path, version);

return version;
}

try
{
return Versioner.GetVersion(repo, tagPrefix, range, buildMetadata, new Logger(level));
return Versioner.GetVersion(repo, tagPrefix, range, buildMetadata, log);
}
finally
{
Expand Down
6 changes: 6 additions & 0 deletions MinVer.sln
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Targets", "targets\Targets.
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MinVer.Tasks", "MinVer.Tasks\MinVer.Tasks.csproj", "{EE9A19AA-0EDC-446F-8FD8-78A066E27B71}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-minver", "dotnet-minver\dotnet-minver.csproj", "{34A5ECB1-400C-462A-B2B8-2B7136BE162A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand All @@ -33,6 +35,10 @@ Global
{EE9A19AA-0EDC-446F-8FD8-78A066E27B71}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EE9A19AA-0EDC-446F-8FD8-78A066E27B71}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EE9A19AA-0EDC-446F-8FD8-78A066E27B71}.Release|Any CPU.Build.0 = Release|Any CPU
{34A5ECB1-400C-462A-B2B8-2B7136BE162A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{34A5ECB1-400C-462A-B2B8-2B7136BE162A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{34A5ECB1-400C-462A-B2B8-2B7136BE162A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{34A5ECB1-400C-462A-B2B8-2B7136BE162A}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
61 changes: 61 additions & 0 deletions dotnet-minver/Logger.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
namespace MinVer
{
using System;

internal class Logger : ILogger
{
private readonly Verbosity level;

public Logger(Verbosity level) => this.level = level;

public bool IsDebugEnabled => this.level >= Verbosity.Debug;

public void Debug(Func<string> createMessage)
{
if (this.level >= Verbosity.Debug)
{
Message(createMessage());
}
}

public void Debug(string message)
{
if (this.level >= Verbosity.Debug)
{
Message(message);
}
}

public void Info(string message)
{
if (this.level >= Verbosity.Info)
{
Message(message);
}
}

public void WarnInvalidRepoPath(string path, Version version) =>
this.Warn($"'{path}' is not a valid repository or working directory. Using default version: {version}");

public static void ErrorInvalidRepoPath(string path) =>
Error($"Invalid repository path '{path}'. Directory does not exist.");

public static void ErrorInvalidMajorMinorRange(string majorMinor) =>
Error($"Invalid MAJOR.MINOR range '{majorMinor}'.");

public static void ErrorInvalidVerbosityLevel(string verbosity) =>
Error($"Invalid verbosity level '{verbosity}'. Valid levels are error, warn, info, debug, and trace.");

private void Warn(string message)
{
if (this.level >= Verbosity.Warn)
{
Message($"warning : {message}");
}
}

private static void Error(string message) => Message($"error : {message}");

private static void Message(string message) => Console.Error.WriteLine($"MinVer: {message}");
}
}
11 changes: 11 additions & 0 deletions dotnet-minver/Verbosity.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
namespace MinVer
{
internal enum Verbosity
{
Error = -2,
Warn = -1,
Info = 0,
Debug = 1,
Trace = 2,
}
}
30 changes: 30 additions & 0 deletions dotnet-minver/dotnet-minver.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Description>Minimalistic versioning for .NET SDK-style projects.</Description>
<OutputType>Exe</OutputType>
<PackAsTool>true</PackAsTool>
<PackageIconUrl>https://raw.githubusercontent.com/adamralph/min-ver/master/assets/min-ver.png</PackageIconUrl>
<PackageLicenseUrl>https://github.com/adamralph/min-ver/blob/master/LICENSE</PackageLicenseUrl>
<PackageProjectUrl>https://github.com/adamralph/min-ver</PackageProjectUrl>
<PackageReleaseNotes>https://github.com/adamralph/min-ver/milestones?state=closed</PackageReleaseNotes>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>

<ItemGroup>
<Compile Include="..\MinVer.Tasks\Program.cs" Link="Program.cs" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="LibGit2Sharp" Version="0.25.3" />
<PackageReference Include="McMaster.Extensions.CommandLineUtils" Version="2.2.5" />
<PackageReference Include="Microsoft.CodeQuality.Analyzers" Version="2.6.2" PrivateAssets="All" />
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0-beta-63127-02" PrivateAssets="All" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\MinVer\MinVer.csproj" />
</ItemGroup>

</Project>
3 changes: 2 additions & 1 deletion targets/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ public static Task Main(string[] args)
Target(
"pack",
DependsOn("publish"),
() => RunAsync("dotnet", $"pack ./MinVer/MinVer.csproj --configuration Release --no-build"));
ForEach("./MinVer/MinVer.csproj", "./dotnet-minver/dotnet-minver.csproj"),
project => RunAsync("dotnet", $"pack {project} --configuration Release --no-build"));

Target(
"test-package",
Expand Down

0 comments on commit a76dfcd

Please sign in to comment.