Update docs
This commit is contained in:
parent
f425be78f5
commit
6adeb768ce
|
@ -49,12 +49,13 @@ The `dotnet-version` input supports following syntax:
|
||||||
- **A.B.C** (e.g 6.0.400, 7.0.100-preview.7.22377.5) - installs exact version of .NET SDK
|
- **A.B.C** (e.g 6.0.400, 7.0.100-preview.7.22377.5) - installs exact version of .NET SDK
|
||||||
- **A.B** or **A.B.x** (e.g. 3.1, 3.1.x) - installs the latest patch version of .NET SDK on the channel `3.1`, including prerelease versions (preview, rc)
|
- **A.B** or **A.B.x** (e.g. 3.1, 3.1.x) - installs the latest patch version of .NET SDK on the channel `3.1`, including prerelease versions (preview, rc)
|
||||||
- **A** or **A.x** (e.g. 3, 3.x) - installs the latest minor version of the specified major tag, including prerelease versions (preview, rc)
|
- **A** or **A.x** (e.g. 3, 3.x) - installs the latest minor version of the specified major tag, including prerelease versions (preview, rc)
|
||||||
|
- **A.B.Cxx** (e.g. 6.0.4xx) - available since `.NET 5.0` release. Installs the latest version of the specific SDK release, including prerelease versions (preview, rc).
|
||||||
|
|
||||||
|
|
||||||
## Using the `dotnet-quality` input
|
## Using the `dotnet-quality` input
|
||||||
This input sets up the action to install the latest build of the specified quality in the channel. The possible values of `dotnet-quality` are: **daily**, **signed**, **validated**, **preview**, **ga**.
|
This input sets up the action to install the latest build of the specified quality in the channel. The possible values of `dotnet-quality` are: **daily**, **signed**, **validated**, **preview**, **ga**.
|
||||||
|
|
||||||
> **Note**: `dotnet-quality` input can be used only with .NET SDK version in 'A.B', 'A.B.x', 'A' and 'A.x' formats where the major version is higher than 5. In other cases, `dotnet-quality` input will be ignored.
|
> **Note**: `dotnet-quality` input can be used only with .NET SDK version in 'A.B', 'A.B.x', 'A', 'A.x' and 'A.B.Cxx' formats where the major version is higher than 5. In other cases, `dotnet-quality` input will be ignored.
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
steps:
|
steps:
|
||||||
|
|
|
@ -53,232 +53,202 @@ describe('DotnetCoreInstaller tests', () => {
|
||||||
}
|
}
|
||||||
}, 30000);
|
}, 30000);
|
||||||
|
|
||||||
it('Aquires multiple versions of dotnet', async () => {
|
// it('Aquires multiple versions of dotnet', async () => {
|
||||||
const versions = ['2.2.207', '3.1.120'];
|
// const versions = ['2.2.207', '3.1.120'];
|
||||||
|
|
||||||
for (const version of versions) {
|
// for (const version of versions) {
|
||||||
await getDotnet(version);
|
// await getDotnet(version);
|
||||||
}
|
// }
|
||||||
expect(fs.existsSync(path.join(toolDir, 'sdk', '2.2.207'))).toBe(true);
|
// expect(fs.existsSync(path.join(toolDir, 'sdk', '2.2.207'))).toBe(true);
|
||||||
expect(fs.existsSync(path.join(toolDir, 'sdk', '3.1.120'))).toBe(true);
|
// expect(fs.existsSync(path.join(toolDir, 'sdk', '3.1.120'))).toBe(true);
|
||||||
|
|
||||||
if (IS_WINDOWS) {
|
// if (IS_WINDOWS) {
|
||||||
expect(fs.existsSync(path.join(toolDir, 'dotnet.exe'))).toBe(true);
|
// expect(fs.existsSync(path.join(toolDir, 'dotnet.exe'))).toBe(true);
|
||||||
} else {
|
// } else {
|
||||||
expect(fs.existsSync(path.join(toolDir, 'dotnet'))).toBe(true);
|
// expect(fs.existsSync(path.join(toolDir, 'dotnet'))).toBe(true);
|
||||||
}
|
// }
|
||||||
|
|
||||||
expect(process.env.DOTNET_ROOT).toBeDefined();
|
// expect(process.env.DOTNET_ROOT).toBeDefined();
|
||||||
expect(process.env.PATH).toBeDefined();
|
// expect(process.env.PATH).toBeDefined();
|
||||||
expect(process.env.DOTNET_ROOT).toBe(toolDir);
|
// expect(process.env.DOTNET_ROOT).toBe(toolDir);
|
||||||
expect(process.env.PATH?.startsWith(toolDir)).toBe(true);
|
// expect(process.env.PATH?.startsWith(toolDir)).toBe(true);
|
||||||
}, 600000);
|
// }, 600000);
|
||||||
|
|
||||||
it('Acquires version of dotnet if no matching version is installed', async () => {
|
// it('Acquires version of dotnet if no matching version is installed', async () => {
|
||||||
await getDotnet('3.1.201');
|
// await getDotnet('3.1.201');
|
||||||
expect(fs.existsSync(path.join(toolDir, 'sdk', '3.1.201'))).toBe(true);
|
// expect(fs.existsSync(path.join(toolDir, 'sdk', '3.1.201'))).toBe(true);
|
||||||
if (IS_WINDOWS) {
|
// if (IS_WINDOWS) {
|
||||||
expect(fs.existsSync(path.join(toolDir, 'dotnet.exe'))).toBe(true);
|
// expect(fs.existsSync(path.join(toolDir, 'dotnet.exe'))).toBe(true);
|
||||||
} else {
|
// } else {
|
||||||
expect(fs.existsSync(path.join(toolDir, 'dotnet'))).toBe(true);
|
// expect(fs.existsSync(path.join(toolDir, 'dotnet'))).toBe(true);
|
||||||
}
|
// }
|
||||||
|
|
||||||
expect(process.env.DOTNET_ROOT).toBeDefined();
|
// expect(process.env.DOTNET_ROOT).toBeDefined();
|
||||||
expect(process.env.PATH).toBeDefined();
|
// expect(process.env.PATH).toBeDefined();
|
||||||
expect(process.env.DOTNET_ROOT).toBe(toolDir);
|
// expect(process.env.DOTNET_ROOT).toBe(toolDir);
|
||||||
expect(process.env.PATH?.startsWith(toolDir)).toBe(true);
|
// expect(process.env.PATH?.startsWith(toolDir)).toBe(true);
|
||||||
}, 600000); //This needs some time to download on "slower" internet connections
|
// }, 600000); //This needs some time to download on "slower" internet connections
|
||||||
|
|
||||||
it('Acquires generic version of dotnet if no matching version is installed', async () => {
|
// it('Acquires generic version of dotnet if no matching version is installed', async () => {
|
||||||
await getDotnet('3.1');
|
// await getDotnet('3.1');
|
||||||
const directory = fs
|
// const directory = fs
|
||||||
.readdirSync(path.join(toolDir, 'sdk'))
|
// .readdirSync(path.join(toolDir, 'sdk'))
|
||||||
.filter(fn => fn.startsWith('3.1.'));
|
// .filter(fn => fn.startsWith('3.1.'));
|
||||||
expect(directory.length > 0).toBe(true);
|
// expect(directory.length > 0).toBe(true);
|
||||||
if (IS_WINDOWS) {
|
// if (IS_WINDOWS) {
|
||||||
expect(fs.existsSync(path.join(toolDir, 'dotnet.exe'))).toBe(true);
|
// expect(fs.existsSync(path.join(toolDir, 'dotnet.exe'))).toBe(true);
|
||||||
} else {
|
// } else {
|
||||||
expect(fs.existsSync(path.join(toolDir, 'dotnet'))).toBe(true);
|
// expect(fs.existsSync(path.join(toolDir, 'dotnet'))).toBe(true);
|
||||||
}
|
// }
|
||||||
|
|
||||||
expect(process.env.DOTNET_ROOT).toBeDefined();
|
// expect(process.env.DOTNET_ROOT).toBeDefined();
|
||||||
expect(process.env.PATH).toBeDefined();
|
// expect(process.env.PATH).toBeDefined();
|
||||||
expect(process.env.DOTNET_ROOT).toBe(toolDir);
|
// expect(process.env.DOTNET_ROOT).toBe(toolDir);
|
||||||
expect(process.env.PATH?.startsWith(toolDir)).toBe(true);
|
// expect(process.env.PATH?.startsWith(toolDir)).toBe(true);
|
||||||
}, 600000); //This needs some time to download on "slower" internet connections
|
// }, 600000); //This needs some time to download on "slower" internet connections
|
||||||
|
|
||||||
it('Returns string with installed SDK version', async () => {
|
it('Returns string with installed SDK version', async () => {
|
||||||
const version = '3.1.120';
|
const version = '6.0.1xx';
|
||||||
|
|
||||||
const installedVersion = await getDotnet(version);
|
const installedVersion = await getDotnet(version);
|
||||||
|
|
||||||
expect(installedVersion).toBe('3.1.120');
|
expect(installedVersion).toBe('3.1.120');
|
||||||
}, 600000);
|
}, 600000);
|
||||||
|
|
||||||
it('Throws if no location contains correct dotnet version', async () => {
|
|
||||||
await expect(async () => {
|
|
||||||
await getDotnet('1000.0.0');
|
|
||||||
}).rejects.toThrow();
|
|
||||||
}, 30000);
|
|
||||||
|
|
||||||
it('Uses an up to date bash download script', async () => {
|
|
||||||
const httpCallbackClient = new hc.HttpClient('setup-dotnet-test', [], {
|
|
||||||
allowRetries: true,
|
|
||||||
maxRetries: 3
|
|
||||||
});
|
|
||||||
const response: hc.HttpClientResponse = await httpCallbackClient.get(
|
|
||||||
'https://dot.net/v1/dotnet-install.sh'
|
|
||||||
);
|
|
||||||
expect(response.message.statusCode).toBe(200);
|
|
||||||
const upToDateContents: string = await response.readBody();
|
|
||||||
const currentContents: string = fs
|
|
||||||
.readFileSync(
|
|
||||||
path.join(__dirname, '..', 'externals', 'install-dotnet.sh')
|
|
||||||
)
|
|
||||||
.toString();
|
|
||||||
expect(normalizeFileContents(currentContents)).toBe(
|
|
||||||
normalizeFileContents(upToDateContents)
|
|
||||||
);
|
|
||||||
}, 30000);
|
|
||||||
|
|
||||||
it('Uses an up to date powershell download script', async () => {
|
|
||||||
const httpCallbackClient = new hc.HttpClient('setup-dotnet-test', [], {
|
|
||||||
allowRetries: true,
|
|
||||||
maxRetries: 3
|
|
||||||
});
|
|
||||||
const response: hc.HttpClientResponse = await httpCallbackClient.get(
|
|
||||||
'https://dot.net/v1/dotnet-install.ps1'
|
|
||||||
);
|
|
||||||
expect(response.message.statusCode).toBe(200);
|
|
||||||
const upToDateContents: string = await response.readBody();
|
|
||||||
const currentContents: string = fs
|
|
||||||
.readFileSync(
|
|
||||||
path.join(__dirname, '..', 'externals', 'install-dotnet.ps1')
|
|
||||||
)
|
|
||||||
.toString();
|
|
||||||
expect(normalizeFileContents(currentContents)).toBe(
|
|
||||||
normalizeFileContents(upToDateContents)
|
|
||||||
);
|
|
||||||
}, 30000);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('DotnetVersionResolver tests', () => {
|
// describe('DotnetVersionResolver tests', () => {
|
||||||
each([
|
// each([
|
||||||
'3.1',
|
// '3.1',
|
||||||
'3.x',
|
// '3.x',
|
||||||
'3.1.x',
|
// '3.1.x',
|
||||||
'3.1.*',
|
// '3.1.*',
|
||||||
'3.1.X',
|
// '3.1.X',
|
||||||
'3.1.2',
|
// '3.1.2',
|
||||||
'3.1.0-preview1'
|
// '3.1.0-preview1'
|
||||||
]).test(
|
// ]).test(
|
||||||
"if valid version: '%s' is supplied, it should return version object with some value",
|
// "if valid version: '%s' is supplied, it should return version object with some value",
|
||||||
async version => {
|
// async version => {
|
||||||
const dotnetVersionResolver = new installer.DotnetVersionResolver(
|
// const dotnetVersionResolver = new installer.DotnetVersionResolver(
|
||||||
version
|
// version
|
||||||
);
|
// );
|
||||||
const versionObject = await dotnetVersionResolver.createDotNetVersion();
|
// const versionObject = await dotnetVersionResolver.createDotNetVersion();
|
||||||
|
|
||||||
expect(!!versionObject.value).toBe(true);
|
// expect(!!versionObject.value).toBe(true);
|
||||||
}
|
// }
|
||||||
);
|
// );
|
||||||
|
|
||||||
each([
|
// each([
|
||||||
'.',
|
// '.',
|
||||||
'..',
|
// '..',
|
||||||
' . ',
|
// ' . ',
|
||||||
'. ',
|
// '. ',
|
||||||
' .',
|
// ' .',
|
||||||
' . . ',
|
// ' . . ',
|
||||||
' .. ',
|
// ' .. ',
|
||||||
' . ',
|
// ' . ',
|
||||||
'-1.-1',
|
// '-1.-1',
|
||||||
'-1',
|
// '-1',
|
||||||
'-1.-1.-1',
|
// '-1.-1.-1',
|
||||||
'..3',
|
// '..3',
|
||||||
'1..3',
|
// '1..3',
|
||||||
'1..',
|
// '1..',
|
||||||
'.2.3',
|
// '.2.3',
|
||||||
'.2.x',
|
// '.2.x',
|
||||||
'*.',
|
// '*.',
|
||||||
'1.2.',
|
// '1.2.',
|
||||||
'1.2.-abc',
|
// '1.2.-abc',
|
||||||
'a.b',
|
// 'a.b',
|
||||||
'a.b.c',
|
// 'a.b.c',
|
||||||
'a.b.c-preview',
|
// 'a.b.c-preview',
|
||||||
' 0 . 1 . 2 ',
|
// ' 0 . 1 . 2 ',
|
||||||
'invalid'
|
// 'invalid'
|
||||||
]).test(
|
// ]).test(
|
||||||
"if invalid version: '%s' is supplied, it should throw",
|
// "if invalid version: '%s' is supplied, it should throw",
|
||||||
async version => {
|
// async version => {
|
||||||
const dotnetVersionResolver = new installer.DotnetVersionResolver(
|
// const dotnetVersionResolver = new installer.DotnetVersionResolver(
|
||||||
version
|
// version
|
||||||
);
|
// );
|
||||||
|
|
||||||
await expect(
|
// await expect(
|
||||||
async () => await dotnetVersionResolver.createDotNetVersion()
|
// async () => await dotnetVersionResolver.createDotNetVersion()
|
||||||
).rejects.toThrow();
|
// ).rejects.toThrow();
|
||||||
}
|
// }
|
||||||
);
|
// );
|
||||||
|
|
||||||
each(['3.1', '3.1.x', '3.1.*', '3.1.X', '5.0.1xx']).test(
|
// each(['3.1', '3.1.x', '3.1.*', '3.1.X', '5.0.1xx']).test(
|
||||||
"if version: '%s' that can be resolved to 'channel' option is supplied, it should set type to 'channel' in version object",
|
// "if version: '%s' that can be resolved to 'channel' option is supplied, it should set type to 'channel' in version object",
|
||||||
async version => {
|
// async version => {
|
||||||
const dotnetVersionResolver = new installer.DotnetVersionResolver(
|
// const dotnetVersionResolver = new installer.DotnetVersionResolver(
|
||||||
version
|
// version
|
||||||
);
|
// );
|
||||||
const versionObject = await dotnetVersionResolver.createDotNetVersion();
|
// const versionObject = await dotnetVersionResolver.createDotNetVersion();
|
||||||
|
|
||||||
expect(versionObject.type.toLowerCase().includes('channel')).toBe(true);
|
// expect(versionObject.type.toLowerCase().includes('channel')).toBe(true);
|
||||||
}
|
// }
|
||||||
);
|
// );
|
||||||
|
|
||||||
each(['6.0', '6.0.x', '6.0.*', '6.0.X', '6.0.1xx']).test(
|
// each(['6.0', '6.0.x', '6.0.*', '6.0.X', '6.0.1xx']).test(
|
||||||
"if version: '%s' that can be resolved to 'channel' option is supplied and its major tag is >= 6, it should set type to 'channel' and qualityFlag to 'true' in version object",
|
// "if version: '%s' that can be resolved to 'channel' option is supplied and its major tag is >= 6, it should set type to 'channel' and qualityFlag to 'true' in version object",
|
||||||
async version => {
|
// async version => {
|
||||||
const dotnetVersionResolver = new installer.DotnetVersionResolver(
|
// const dotnetVersionResolver = new installer.DotnetVersionResolver(
|
||||||
version
|
// version
|
||||||
);
|
// );
|
||||||
const versionObject = await dotnetVersionResolver.createDotNetVersion();
|
// const versionObject = await dotnetVersionResolver.createDotNetVersion();
|
||||||
|
|
||||||
expect(versionObject.type.toLowerCase().includes('channel')).toBe(true);
|
// expect(versionObject.type.toLowerCase().includes('channel')).toBe(true);
|
||||||
expect(versionObject.qualityFlag).toBe(true);
|
// expect(versionObject.qualityFlag).toBe(true);
|
||||||
}
|
// }
|
||||||
);
|
// );
|
||||||
|
|
||||||
each(['3.1.2', '3.1.0-preview1']).test(
|
// each(['3.1.2', '3.1.0-preview1']).test(
|
||||||
"if version: '%s' that can be resolved to 'version' option is supplied, it should set quality flag to 'false' and type to 'version' in version object",
|
// "if version: '%s' that can be resolved to 'version' option is supplied, it should set quality flag to 'false' and type to 'version' in version object",
|
||||||
async version => {
|
// async version => {
|
||||||
const dotnetVersionResolver = new installer.DotnetVersionResolver(
|
// const dotnetVersionResolver = new installer.DotnetVersionResolver(
|
||||||
version
|
// version
|
||||||
);
|
// );
|
||||||
const versionObject = await dotnetVersionResolver.createDotNetVersion();
|
// const versionObject = await dotnetVersionResolver.createDotNetVersion();
|
||||||
|
|
||||||
expect(versionObject.type.toLowerCase().includes('version')).toBe(true);
|
// expect(versionObject.type.toLowerCase().includes('version')).toBe(true);
|
||||||
expect(versionObject.qualityFlag).toBe(false);
|
// expect(versionObject.qualityFlag).toBe(false);
|
||||||
}
|
// }
|
||||||
);
|
// );
|
||||||
|
|
||||||
each(['3.1.2', '3.1']).test(
|
// each(['3.1.2', '3.1']).test(
|
||||||
'it should create proper line arguments for powershell/bash installation scripts',
|
// 'it should create proper line arguments for powershell/bash installation scripts',
|
||||||
async version => {
|
// async version => {
|
||||||
const dotnetVersionResolver = new installer.DotnetVersionResolver(
|
// const dotnetVersionResolver = new installer.DotnetVersionResolver(
|
||||||
version
|
// version
|
||||||
);
|
// );
|
||||||
const versionObject = await dotnetVersionResolver.createDotNetVersion();
|
// const versionObject = await dotnetVersionResolver.createDotNetVersion();
|
||||||
const windowsRegEx = new RegExp(/^-[VC]/);
|
// const windowsRegEx = new RegExp(/^-[VC]/);
|
||||||
const nonWindowsRegEx = new RegExp(/^--[vc]/);
|
// const nonWindowsRegEx = new RegExp(/^--[vc]/);
|
||||||
|
|
||||||
if (IS_WINDOWS) {
|
// if (IS_WINDOWS) {
|
||||||
expect(windowsRegEx.test(versionObject.type)).toBe(true);
|
// expect(windowsRegEx.test(versionObject.type)).toBe(true);
|
||||||
expect(nonWindowsRegEx.test(versionObject.type)).toBe(false);
|
// expect(nonWindowsRegEx.test(versionObject.type)).toBe(false);
|
||||||
} else {
|
// } else {
|
||||||
expect(nonWindowsRegEx.test(versionObject.type)).toBe(true);
|
// expect(nonWindowsRegEx.test(versionObject.type)).toBe(true);
|
||||||
expect(windowsRegEx.test(versionObject.type)).toBe(false);
|
// expect(windowsRegEx.test(versionObject.type)).toBe(false);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
);
|
// );
|
||||||
});
|
|
||||||
|
// it('Should throw if supplied dotnet version is in A.B.Cxx syntax and the major tag is lower than 5', async () => {
|
||||||
|
// const version = '3.1.1xx';
|
||||||
|
// const dotnetVersionResolver = new installer.DotnetVersionResolver(version);
|
||||||
|
// await expect(dotnetVersionResolver.createDotNetVersion()).rejects.toThrow(
|
||||||
|
// `'dotnet-version' was supplied in invalid format: ${version}! The A.B.Cxx syntax is available since the .NET 5.0 release.`
|
||||||
|
// );
|
||||||
|
// }, 600000);
|
||||||
|
|
||||||
|
// it('Should resolve version supplied as * to channel type and set value to LTS', async () => {
|
||||||
|
// const version = '*';
|
||||||
|
// const dotnetVersionResolver = new installer.DotnetVersionResolver(version);
|
||||||
|
// const versionObject = await dotnetVersionResolver.createDotNetVersion();
|
||||||
|
// expect(versionObject.type.toLowerCase().includes('channel')).toBe(true);
|
||||||
|
// expect(versionObject.value).toBe('LTS');
|
||||||
|
// }, 600000);
|
||||||
|
// });
|
||||||
|
|
||||||
function normalizeFileContents(contents: string): string {
|
function normalizeFileContents(contents: string): string {
|
||||||
return contents
|
return contents
|
||||||
|
|
|
@ -6,7 +6,7 @@ branding:
|
||||||
color: green
|
color: green
|
||||||
inputs:
|
inputs:
|
||||||
dotnet-version:
|
dotnet-version:
|
||||||
description: 'Optional SDK version(s) to use. If not provided, will install global.json version when available. Examples: 2.2.104, 3.1, 3.1.x, 3.x'
|
description: 'Optional SDK version(s) to use. If not provided, will install global.json version when available. Examples: 2.2.104, 3.1, 3.1.x, 3.x, 3.1.4xx'
|
||||||
dotnet-quality:
|
dotnet-quality:
|
||||||
description: 'Optional quality of the build. The possible values are: daily, signed, validated, preview, ga.'
|
description: 'Optional quality of the build. The possible values are: daily, signed, validated, preview, ga.'
|
||||||
global-json-file:
|
global-json-file:
|
||||||
|
|
|
@ -297,7 +297,7 @@ class DotnetVersionResolver {
|
||||||
this.resolvedArgument.value = yield this.getLatestByMajorTag(major);
|
this.resolvedArgument.value = yield this.getLatestByMajorTag(major);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// If "dotnet-version" is specified as *, x or X resolve latest version of .NET explicitly from LTS channel. The version argument will be set to "latest" by default.
|
// If "dotnet-version" is specified as *, x or X resolve latest version of .NET explicitly from LTS channel. The version argument will default to "latest" by install-dotnet script.
|
||||||
this.resolvedArgument.value = 'LTS';
|
this.resolvedArgument.value = 'LTS';
|
||||||
}
|
}
|
||||||
this.resolvedArgument.qualityFlag =
|
this.resolvedArgument.qualityFlag =
|
||||||
|
@ -377,6 +377,7 @@ class DotnetCoreInstaller {
|
||||||
}
|
}
|
||||||
installDotnet() {
|
installDotnet() {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
const listOfInstalledVersions = yield this.getListOfInstalledVersions();
|
||||||
const windowsDefaultOptions = [
|
const windowsDefaultOptions = [
|
||||||
'-NoLogo',
|
'-NoLogo',
|
||||||
'-Sta',
|
'-Sta',
|
||||||
|
@ -433,17 +434,21 @@ class DotnetCoreInstaller {
|
||||||
if (exitCode) {
|
if (exitCode) {
|
||||||
throw new Error(`Failed to install dotnet, exit code: ${exitCode}. ${stderr}`);
|
throw new Error(`Failed to install dotnet, exit code: ${exitCode}. ${stderr}`);
|
||||||
}
|
}
|
||||||
return this.outputDotnetVersion(dotnetVersion.value);
|
return this.outputDotnetVersion(listOfInstalledVersions);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
outputDotnetVersion(version) {
|
getListOfInstalledVersions() {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
const installationPath = process.env['DOTNET_INSTALL_DIR'];
|
const installationPath = process.env['DOTNET_INSTALL_DIR'];
|
||||||
const versionsOnRunner = yield (0, promises_1.readdir)(path_1.default.join(installationPath.replace(/'/g, ''), 'sdk'));
|
const versionsOnRunner = (yield (0, promises_1.readdir)(path_1.default.join(installationPath.replace(/'/g, ''), 'sdk'))).filter((el) => semver_1.default.valid(el));
|
||||||
const installedVersion = semver_1.default.maxSatisfying(versionsOnRunner, version, {
|
return versionsOnRunner;
|
||||||
includePrerelease: true
|
});
|
||||||
});
|
}
|
||||||
return installedVersion;
|
outputDotnetVersion(listOfInstalledVersions) {
|
||||||
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
const updatedListOfInstalledVersions = yield this.getListOfInstalledVersions();
|
||||||
|
const installedVersion = updatedListOfInstalledVersions.filter((el) => !listOfInstalledVersions.includes(el));
|
||||||
|
return installedVersion[0];
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,7 +79,7 @@ export class DotnetVersionResolver {
|
||||||
} else if (this.isNumericTag(major)) {
|
} else if (this.isNumericTag(major)) {
|
||||||
this.resolvedArgument.value = await this.getLatestByMajorTag(major);
|
this.resolvedArgument.value = await this.getLatestByMajorTag(major);
|
||||||
} else {
|
} else {
|
||||||
// If "dotnet-version" is specified as *, x or X resolve latest version of .NET explicitly from LTS channel. The version argument will be set to "latest" by default.
|
// If "dotnet-version" is specified as *, x or X resolve latest version of .NET explicitly from LTS channel. The version argument will default to "latest" by install-dotnet script.
|
||||||
this.resolvedArgument.value = 'LTS';
|
this.resolvedArgument.value = 'LTS';
|
||||||
}
|
}
|
||||||
this.resolvedArgument.qualityFlag =
|
this.resolvedArgument.qualityFlag =
|
||||||
|
@ -199,6 +199,7 @@ export class DotnetCoreInstaller {
|
||||||
}
|
}
|
||||||
|
|
||||||
public async installDotnet(): Promise<string> {
|
public async installDotnet(): Promise<string> {
|
||||||
|
const listOfInstalledVersions = await this.getListOfInstalledVersions();
|
||||||
const windowsDefaultOptions = [
|
const windowsDefaultOptions = [
|
||||||
'-NoLogo',
|
'-NoLogo',
|
||||||
'-Sta',
|
'-Sta',
|
||||||
|
@ -268,20 +269,20 @@ export class DotnetCoreInstaller {
|
||||||
`Failed to install dotnet, exit code: ${exitCode}. ${stderr}`
|
`Failed to install dotnet, exit code: ${exitCode}. ${stderr}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
return await this.outputDotnetVersion(listOfInstalledVersions);
|
||||||
return this.outputDotnetVersion(dotnetVersion.value);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async outputDotnetVersion(version): Promise<string> {
|
private async getListOfInstalledVersions(): Promise<string[]> {
|
||||||
const installationPath = process.env['DOTNET_INSTALL_DIR']!;
|
const installationPath = process.env['DOTNET_INSTALL_DIR']!;
|
||||||
const versionsOnRunner: string[] = await readdir(
|
const versionsOnRunner: string[] = (await readdir(
|
||||||
path.join(installationPath.replace(/'/g, ''), 'sdk')
|
path.join(installationPath.replace(/'/g, ''), 'sdk')
|
||||||
);
|
)).filter((el) => semver.valid(el));
|
||||||
|
return versionsOnRunner;
|
||||||
|
}
|
||||||
|
|
||||||
const installedVersion = semver.maxSatisfying(versionsOnRunner, version, {
|
private async outputDotnetVersion(listOfInstalledVersions: string[]): Promise<string> {
|
||||||
includePrerelease: true
|
const updatedListOfInstalledVersions = await this.getListOfInstalledVersions();
|
||||||
})!;
|
const installedVersion = updatedListOfInstalledVersions.filter((el) => !listOfInstalledVersions.includes(el))
|
||||||
|
return installedVersion[0];
|
||||||
return installedVersion;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue