update logic of outputting dotnet-version
This commit is contained in:
parent
e8501859aa
commit
fefaa59d2e
|
@ -439,7 +439,8 @@ class DotnetCoreInstaller {
|
||||||
const regex = /(?<version>\d+\.\d+\.\d+[a-z0-9._-]*)/gm;
|
const regex = /(?<version>\d+\.\d+\.\d+[a-z0-9._-]*)/gm;
|
||||||
const matchedResult = regex.exec(stdout);
|
const matchedResult = regex.exec(stdout);
|
||||||
if (!matchedResult) {
|
if (!matchedResult) {
|
||||||
throw new Error(`Failed to parse installed by the script version of .NET`);
|
core.warning(`Failed to parse installed by the script version of .NET`);
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
return matchedResult.groups.version;
|
return matchedResult.groups.version;
|
||||||
}
|
}
|
||||||
|
@ -577,13 +578,18 @@ function run() {
|
||||||
if (sourceUrl) {
|
if (sourceUrl) {
|
||||||
auth.configAuthentication(sourceUrl, configFile);
|
auth.configAuthentication(sourceUrl, configFile);
|
||||||
}
|
}
|
||||||
const comparisonRange = globalJsonFileInput
|
// const comparisonRange: string = globalJsonFileInput
|
||||||
? versions[versions.length - 1]
|
// ? versions[versions.length - 1]!
|
||||||
: '*';
|
// : '*';
|
||||||
const versionToOutput = semver_1.default.maxSatisfying(installedDotnetVersions, comparisonRange, {
|
// const versionToOutput = semver.maxSatisfying(
|
||||||
includePrerelease: true
|
// installedDotnetVersions,
|
||||||
});
|
// comparisonRange,
|
||||||
core.setOutput('dotnet-version', versionToOutput);
|
// {
|
||||||
|
// includePrerelease: true
|
||||||
|
// }
|
||||||
|
// );
|
||||||
|
// core.setOutput('dotnet-version', versionToOutput);
|
||||||
|
outputInstalledVersion(installedDotnetVersions, globalJsonFileInput);
|
||||||
const matchersPath = path_1.default.join(__dirname, '..', '.github');
|
const matchersPath = path_1.default.join(__dirname, '..', '.github');
|
||||||
core.info(`##[add-matcher]${path_1.default.join(matchersPath, 'csc.json')}`);
|
core.info(`##[add-matcher]${path_1.default.join(matchersPath, 'csc.json')}`);
|
||||||
}
|
}
|
||||||
|
@ -608,6 +614,24 @@ function getVersionFromGlobalJson(globalJsonPath) {
|
||||||
}
|
}
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
function outputInstalledVersion(installedVersions, globalJsonFileInput) {
|
||||||
|
if (!installedVersions.length) {
|
||||||
|
core.info(`No .NET version was installed. The 'dotnet-version' output will not be set.`);
|
||||||
|
}
|
||||||
|
if (installedVersions.includes(null)) {
|
||||||
|
core.warning(`Failed to output the installed version of .NET. The 'dotnet-version' output will not be set.`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (globalJsonFileInput) {
|
||||||
|
const versionToOutput = installedVersions.at(-1);
|
||||||
|
core.setOutput('dotnet-version', versionToOutput);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const versionToOutput = semver_1.default.maxSatisfying(installedVersions, '*', {
|
||||||
|
includePrerelease: true
|
||||||
|
});
|
||||||
|
core.setOutput('dotnet-version', versionToOutput);
|
||||||
|
}
|
||||||
run();
|
run();
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -197,7 +197,7 @@ export class DotnetCoreInstaller {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async installDotnet(): Promise<string> {
|
public async installDotnet(): Promise<string | null> {
|
||||||
const windowsDefaultOptions = [
|
const windowsDefaultOptions = [
|
||||||
'-NoLogo',
|
'-NoLogo',
|
||||||
'-Sta',
|
'-Sta',
|
||||||
|
@ -271,14 +271,13 @@ export class DotnetCoreInstaller {
|
||||||
return this.parseInstalledVersion(stdout);
|
return this.parseInstalledVersion(stdout);
|
||||||
}
|
}
|
||||||
|
|
||||||
private parseInstalledVersion(stdout: string): string {
|
private parseInstalledVersion(stdout: string): string | null {
|
||||||
const regex = /(?<version>\d+\.\d+\.\d+[a-z0-9._-]*)/gm;
|
const regex = /(?<version>\d+\.\d+\.\d+[a-z0-9._-]*)/gm;
|
||||||
const matchedResult = regex.exec(stdout);
|
const matchedResult = regex.exec(stdout);
|
||||||
|
|
||||||
if (!matchedResult) {
|
if (!matchedResult) {
|
||||||
throw new Error(
|
core.warning(`Failed to parse installed by the script version of .NET`);
|
||||||
`Failed to parse installed by the script version of .NET`
|
return null;
|
||||||
);
|
|
||||||
}
|
}
|
||||||
return matchedResult.groups!.version;
|
return matchedResult.groups!.version;
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ export async function run() {
|
||||||
// Proxy, auth, (etc) are still set up, even if no version is identified
|
// Proxy, auth, (etc) are still set up, even if no version is identified
|
||||||
//
|
//
|
||||||
const versions = core.getMultilineInput('dotnet-version');
|
const versions = core.getMultilineInput('dotnet-version');
|
||||||
const installedDotnetVersions: string[] = [];
|
const installedDotnetVersions: (string | null)[] = [];
|
||||||
|
|
||||||
const globalJsonFileInput = core.getInput('global-json-file');
|
const globalJsonFileInput = core.getInput('global-json-file');
|
||||||
if (globalJsonFileInput) {
|
if (globalJsonFileInput) {
|
||||||
|
@ -78,19 +78,20 @@ export async function run() {
|
||||||
auth.configAuthentication(sourceUrl, configFile);
|
auth.configAuthentication(sourceUrl, configFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
const comparisonRange: string = globalJsonFileInput
|
// const comparisonRange: string = globalJsonFileInput
|
||||||
? versions[versions.length - 1]!
|
// ? versions[versions.length - 1]!
|
||||||
: '*';
|
// : '*';
|
||||||
|
|
||||||
const versionToOutput = semver.maxSatisfying(
|
// const versionToOutput = semver.maxSatisfying(
|
||||||
installedDotnetVersions,
|
// installedDotnetVersions,
|
||||||
comparisonRange,
|
// comparisonRange,
|
||||||
{
|
// {
|
||||||
includePrerelease: true
|
// includePrerelease: true
|
||||||
}
|
// }
|
||||||
);
|
// );
|
||||||
|
|
||||||
core.setOutput('dotnet-version', versionToOutput);
|
// core.setOutput('dotnet-version', versionToOutput);
|
||||||
|
outputInstalledVersion(installedDotnetVersions, globalJsonFileInput);
|
||||||
|
|
||||||
const matchersPath = path.join(__dirname, '..', '.github');
|
const matchersPath = path.join(__dirname, '..', '.github');
|
||||||
core.info(`##[add-matcher]${path.join(matchersPath, 'csc.json')}`);
|
core.info(`##[add-matcher]${path.join(matchersPath, 'csc.json')}`);
|
||||||
|
@ -116,4 +117,37 @@ function getVersionFromGlobalJson(globalJsonPath: string): string {
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function outputInstalledVersion(
|
||||||
|
installedVersions: (string | null)[],
|
||||||
|
globalJsonFileInput: string
|
||||||
|
): void {
|
||||||
|
if (!installedVersions.length) {
|
||||||
|
core.info(
|
||||||
|
`No .NET version was installed. The 'dotnet-version' output will not be set.`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (installedVersions.includes(null)) {
|
||||||
|
core.warning(
|
||||||
|
`Failed to output the installed version of .NET. The 'dotnet-version' output will not be set.`
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (globalJsonFileInput) {
|
||||||
|
const versionToOutput = installedVersions.at(-1);
|
||||||
|
core.setOutput('dotnet-version', versionToOutput);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const versionToOutput = semver.maxSatisfying(
|
||||||
|
installedVersions as string[],
|
||||||
|
'*',
|
||||||
|
{
|
||||||
|
includePrerelease: true
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
core.setOutput('dotnet-version', versionToOutput);
|
||||||
|
}
|
||||||
|
|
||||||
run();
|
run();
|
||||||
|
|
Loading…
Reference in New Issue