100 lines
4.9 KiB
TypeScript
100 lines
4.9 KiB
TypeScript
import { IBuildAgent, IGitVersion, IGitVersionOptions, IGitVersionTool } from "./interfaces";
|
|
|
|
import { RunOptions, SetupOptions } from "./types";
|
|
|
|
export async function setup(buildAgent: IBuildAgent, gitVersionTool: IGitVersionTool) {
|
|
try {
|
|
|
|
buildAgent.exportVariable("DOTNET_CLI_TELEMETRY_OPTOUT", "1");
|
|
|
|
const versionSpec = buildAgent.getInput(SetupOptions.versionSpec);
|
|
const includePrerelease = buildAgent.getBooleanInput(SetupOptions.includePrerelease);
|
|
|
|
await gitVersionTool.install(versionSpec, includePrerelease);
|
|
|
|
buildAgent.setSucceeded("GitVersion installed successfully", true);
|
|
} catch (error) {
|
|
buildAgent.setFailed(error.message, true);
|
|
}
|
|
}
|
|
|
|
export async function run(buildAgent: IBuildAgent, gitVersionTool: IGitVersionTool) {
|
|
try {
|
|
const inputOptions: IGitVersionOptions = getGitVersionOptions(buildAgent);
|
|
|
|
const result = await gitVersionTool.run(inputOptions);
|
|
|
|
const gitversion = JSON.parse(result.stdout) as IGitVersion;
|
|
writeGitVersionToAgent(buildAgent, gitversion);
|
|
|
|
if (result.code === 0) {
|
|
buildAgent.setSucceeded("GitVersion executed successfully", true);
|
|
} else {
|
|
buildAgent.setFailed(result.error.message, true);
|
|
}
|
|
|
|
} catch (error) {
|
|
buildAgent.setFailed(error, true);
|
|
}
|
|
}
|
|
|
|
function getGitVersionOptions(buildAgent: IBuildAgent): IGitVersionOptions {
|
|
|
|
const targetPath = buildAgent.getInput(RunOptions.targetPath);
|
|
|
|
const useConfigFile = buildAgent.getBooleanInput(RunOptions.useConfigFile);
|
|
const configFilePath = buildAgent.getInput(RunOptions.configFilePath);
|
|
|
|
const updateAssemblyInfo = buildAgent.getBooleanInput(RunOptions.updateAssemblyInfo);
|
|
const updateAssemblyInfoFilename = buildAgent.getInput(RunOptions.updateAssemblyInfoFilename);
|
|
|
|
const additionalArguments = buildAgent.getInput(RunOptions.additionalArguments);
|
|
|
|
const srcDir = buildAgent.getSourceDir().replace(/\\/g, "/");
|
|
|
|
return {
|
|
targetPath,
|
|
useConfigFile,
|
|
configFilePath,
|
|
updateAssemblyInfo,
|
|
updateAssemblyInfoFilename,
|
|
additionalArguments,
|
|
srcDir,
|
|
};
|
|
}
|
|
|
|
function writeGitVersionToAgent(buildAgent: IBuildAgent, gitversion: IGitVersion): void {
|
|
|
|
buildAgent.setOutput("major", gitversion.Major.toString());
|
|
buildAgent.setOutput("minor", gitversion.Minor.toString());
|
|
buildAgent.setOutput("patch", gitversion.Patch.toString());
|
|
buildAgent.setOutput("preReleaseTag", gitversion.PreReleaseTag);
|
|
buildAgent.setOutput("preReleaseTagWithDash", gitversion.PreReleaseTagWithDash);
|
|
buildAgent.setOutput("preReleaseLabel", gitversion.PreReleaseLabel);
|
|
buildAgent.setOutput("preReleaseNumber", gitversion.PreReleaseNumber.toString());
|
|
buildAgent.setOutput("weightedPreReleaseNumber", gitversion.WeightedPreReleaseNumber.toString());
|
|
buildAgent.setOutput("buildMetaData", gitversion.BuildMetaData.toString());
|
|
buildAgent.setOutput("buildMetaDataPadded", gitversion.BuildMetaDataPadded);
|
|
buildAgent.setOutput("fullBuildMetaData", gitversion.FullBuildMetaData);
|
|
buildAgent.setOutput("majorMinorPatch", gitversion.MajorMinorPatch);
|
|
buildAgent.setOutput("semVer", gitversion.SemVer);
|
|
buildAgent.setOutput("legacySemVer", gitversion.LegacySemVer);
|
|
buildAgent.setOutput("legacySemVerPadded", gitversion.LegacySemVerPadded);
|
|
buildAgent.setOutput("assemblySemVer", gitversion.AssemblySemVer);
|
|
buildAgent.setOutput("assemblySemFileVer", gitversion.AssemblySemFileVer);
|
|
buildAgent.setOutput("fullSemVer", gitversion.FullSemVer);
|
|
buildAgent.setOutput("informationalVersion", gitversion.InformationalVersion);
|
|
buildAgent.setOutput("branchName", gitversion.BranchName);
|
|
buildAgent.setOutput("sha", gitversion.Sha);
|
|
buildAgent.setOutput("shortSha", gitversion.ShortSha);
|
|
buildAgent.setOutput("nuGetVersionV2", gitversion.NuGetVersionV2);
|
|
buildAgent.setOutput("nuGetVersion", gitversion.NuGetVersion);
|
|
buildAgent.setOutput("nuGetPreReleaseTagV2", gitversion.NuGetPreReleaseTagV2);
|
|
buildAgent.setOutput("nuGetPreReleaseTag", gitversion.NuGetPreReleaseTag);
|
|
buildAgent.setOutput("versionSourceSha", gitversion.VersionSourceSha);
|
|
buildAgent.setOutput("commitsSinceVersionSource", gitversion.CommitsSinceVersionSource.toString());
|
|
buildAgent.setOutput("commitsSinceVersionSourcePadded", gitversion.CommitsSinceVersionSourcePadded);
|
|
buildAgent.setOutput("commitDate", gitversion.CommitDate);
|
|
|
|
}
|