66 lines
2.5 KiB
C#
66 lines
2.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.IO.Compression;
|
|
using System.Runtime.InteropServices;
|
|
using System.Net.Http;
|
|
using Microsoft.Build.Utilities;
|
|
using Microsoft.DotNet.Cli.Build.Framework;
|
|
using Microsoft.DotNet.InternalAbstractions;
|
|
using Microsoft.Build.Framework;
|
|
using Microsoft.Build.Utilities;
|
|
using System.Security.Cryptography;
|
|
|
|
using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers;
|
|
|
|
namespace Microsoft.DotNet.Cli.Build
|
|
{
|
|
public class GenerateBuildVersionInfo : Task
|
|
{
|
|
[Required]
|
|
public string RepoRoot { get; set; }
|
|
|
|
[Output]
|
|
public ITaskItem OutputBuildVersionInfo { get; set; }
|
|
|
|
public override bool Execute()
|
|
{
|
|
var branchInfo = new BranchInfo(RepoRoot);
|
|
|
|
var commitCount = GitUtils.GetCommitCount();
|
|
var commitHash = GitUtils.GetCommitHash();
|
|
|
|
var buildVersion = new BuildVersion()
|
|
{
|
|
Major = int.Parse(branchInfo.Entries["MAJOR_VERSION"]),
|
|
Minor = int.Parse(branchInfo.Entries["MINOR_VERSION"]),
|
|
Patch = int.Parse(branchInfo.Entries["PATCH_VERSION"]),
|
|
ReleaseSuffix = branchInfo.Entries["RELEASE_SUFFIX"],
|
|
CommitCount = commitCount
|
|
};
|
|
|
|
OutputBuildVersionInfo = ConstructBuildVersionInfoItem(buildVersion, commitHash);
|
|
|
|
return true;
|
|
}
|
|
|
|
private ITaskItem ConstructBuildVersionInfoItem(BuildVersion buildVersion, string commitHash)
|
|
{
|
|
var versionInfo = new TaskItem();
|
|
versionInfo.ItemSpec = "BuildVersionInfo";
|
|
|
|
versionInfo.SetMetadata("CommitHash", commitHash);
|
|
versionInfo.SetMetadata("Major", buildVersion.Major.ToString());
|
|
versionInfo.SetMetadata("Minor", buildVersion.Minor.ToString());
|
|
versionInfo.SetMetadata("Patch", buildVersion.Patch.ToString());
|
|
versionInfo.SetMetadata("ReleaseSuffix", buildVersion.ReleaseSuffix);
|
|
versionInfo.SetMetadata("CommitCount", buildVersion.CommitCountString);
|
|
versionInfo.SetMetadata("VersionSuffix", buildVersion.VersionSuffix);
|
|
versionInfo.SetMetadata("SimpleVersion", buildVersion.SimpleVersion);
|
|
versionInfo.SetMetadata("NugetVersion", buildVersion.NuGetVersion);
|
|
versionInfo.SetMetadata("MsiVersion", buildVersion.GenerateMsiVersion());
|
|
|
|
return versionInfo;
|
|
}
|
|
}
|
|
}
|