Refactor tasks

This commit is contained in:
Justin Goshi 2017-02-10 12:13:44 -08:00
parent 0986cc079a
commit 33d83d6639
14 changed files with 144 additions and 130 deletions

View file

@ -1,97 +0,0 @@
// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using System.Runtime.InteropServices;
namespace Microsoft.DotNet.Cli.Build
{
public class GenerateBuildVersionInfo : ToolTask
{
[Required]
public string RepoRoot { get; set; }
[Required]
public int VersionMajor { get; set; }
[Required]
public int VersionMinor { get; set; }
[Required]
public int VersionPatch { get; set; }
[Required]
public string ReleaseSuffix { get; set; }
[Output]
public string CommitCount { get; set; }
[Output]
public string VersionSuffix { get; set; }
[Output]
public string SimpleVersion { get; set; }
[Output]
public string NugetVersion { get; set; }
[Output]
public string MsiVersion { get; set; }
[Output]
public string VersionBadgeMoniker { get; set; }
private int _commitCount;
public override bool Execute()
{
base.Execute();
var buildVersion = new BuildVersion()
{
Major = VersionMajor,
Minor = VersionMinor,
Patch = VersionPatch,
ReleaseSuffix = ReleaseSuffix,
CommitCount = _commitCount
};
CommitCount = buildVersion.CommitCountString;
VersionSuffix = buildVersion.VersionSuffix;
SimpleVersion = buildVersion.SimpleVersion;
NugetVersion = buildVersion.NuGetVersion;
MsiVersion = buildVersion.GenerateMsiVersion();
VersionBadgeMoniker = Monikers.GetBadgeMoniker();
return true;
}
protected override string ToolName
{
get { return "git"; }
}
protected override MessageImportance StandardOutputLoggingImportance
{
get { return MessageImportance.High; } // or else the output doesn't get logged by default
}
protected override string GenerateFullPathToTool()
{
// Workaround: https://github.com/Microsoft/msbuild/issues/1215
// There's a "git" folder on the PATH in VS 2017 Developer command prompt and it causes msbuild to fail to execute git.
return RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "git.exe" : "git";
}
protected override string GenerateCommandLineCommands()
{
return $"rev-list --count HEAD";
}
protected override void LogEventsFromTextOutput(string line, MessageImportance importance)
{
_commitCount = int.Parse(line);
}
}
}

View file

@ -0,0 +1,46 @@
// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using System.Runtime.InteropServices;
namespace Microsoft.DotNet.Cli.Build
{
public class GenerateMsiVersion : Task
{
[Required]
public int CommitCount { get; set; }
[Required]
public int VersionMajor { get; set; }
[Required]
public int VersionMinor { get; set; }
[Required]
public int VersionPatch { get; set; }
[Required]
public string ReleaseSuffix { get; set; }
[Output]
public string MsiVersion { get; set; }
public override bool Execute()
{
var buildVersion = new BuildVersion()
{
Major = VersionMajor,
Minor = VersionMinor,
Patch = VersionPatch,
ReleaseSuffix = ReleaseSuffix,
CommitCount = CommitCount
};
MsiVersion = buildVersion.GenerateMsiVersion();
return true;
}
}
}

View file

@ -0,0 +1,42 @@
// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using System.Runtime.InteropServices;
namespace Microsoft.DotNet.Cli.Build
{
public class GetCommitCount : ToolTask
{
[Output]
public string CommitCount { get; set; }
protected override string ToolName
{
get { return "git"; }
}
protected override MessageImportance StandardOutputLoggingImportance
{
get { return MessageImportance.High; } // or else the output doesn't get logged by default
}
protected override string GenerateFullPathToTool()
{
// Workaround: https://github.com/Microsoft/msbuild/issues/1215
// There's a "git" folder on the PATH in VS 2017 Developer command prompt and it causes msbuild to fail to execute git.
return RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "git.exe" : "git";
}
protected override string GenerateCommandLineCommands()
{
return $"rev-list --count HEAD";
}
protected override void LogEventsFromTextOutput(string line, MessageImportance importance)
{
CommitCount = line;
}
}
}

View file

@ -9,9 +9,6 @@ namespace Microsoft.DotNet.Cli.Build
{
public class GetCommitHash : ToolTask
{
[Required]
public string RepoRoot { get; set; }
[Output]
public string CommitHash { get; set; }
@ -42,4 +39,4 @@ namespace Microsoft.DotNet.Cli.Build
CommitHash = line;
}
}
}
}

View file

@ -9,8 +9,6 @@ namespace Microsoft.DotNet.Cli.Build
{
public class GetCurrentRuntimeInformation : Task
{
public string OverrideRid { get; set; }
[Output]
public string Rid { get; set; }
@ -22,7 +20,7 @@ namespace Microsoft.DotNet.Cli.Build
public override bool Execute()
{
Rid = string.IsNullOrEmpty(OverrideRid) ? RuntimeEnvironment.GetRuntimeIdentifier() : OverrideRid;
Rid = RuntimeEnvironment.GetRuntimeIdentifier();
Architecture = RuntimeEnvironment.RuntimeArchitecture;
OSName = Monikers.GetOSShortName();

View file

@ -0,0 +1,22 @@
// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using System.Runtime.InteropServices;
namespace Microsoft.DotNet.Cli.Build
{
public class GetVersionBadgeMoniker : Task
{
[Output]
public string VersionBadgeMoniker { get; set; }
public override bool Execute()
{
VersionBadgeMoniker = Monikers.GetBadgeMoniker();
return true;
}
}
}