Avoid api calls for exact versions

This commit is contained in:
Zachary Eisinger 2020-07-16 22:13:42 -07:00
parent 082a8866f9
commit b928c2d2d6
3 changed files with 30 additions and 25 deletions

View File

@ -121,13 +121,13 @@ describe('installer tests', () => {
it('Resolving a exact preview version works', async () => {
const dotnetInstaller = new installer.DotnetCoreInstaller(
'5.0.0-preview.4'
'5.0.0-preview.6'
);
let versInfo = await dotnetInstaller.resolveInfos(
new installer.DotNetVersionInfo('5.0.0-preview.4')
new installer.DotNetVersionInfo('5.0.0-preview.6')
);
expect(versInfo).toBe('5.0.0-preview.4');
expect(versInfo).toBe('5.0.0-preview.6');
}, 100000);
it('Acquires version of dotnet if no matching version is installed', async () => {

22
dist/index.js vendored
View File

@ -16723,7 +16723,7 @@ class DotnetCoreInstaller {
return __awaiter(this, void 0, void 0, function* () {
let output = '';
let resultCode = 0;
let calculatedVersion = yield this.resolveInfos(new DotNetVersionInfo(this.version));
let calculatedVersion = yield this.resolveVersion(new DotNetVersionInfo(this.version));
var envVariables = {};
for (let key in process.env) {
if (process.env[key]) {
@ -16792,11 +16792,12 @@ class DotnetCoreInstaller {
}
});
}
// OsSuffixes - The suffix which is a part of the file name ex- linux-x64, windows-x86
// Type - SDK / Runtime
// versionInfo - versionInfo of the SDK/Runtime
resolveInfos(versionInfo) {
resolveVersion(versionInfo) {
return __awaiter(this, void 0, void 0, function* () {
if (versionInfo.isExactVersion()) {
return versionInfo.version();
}
const httpClient = new hc.HttpClient('actions/setup-dotnet', [], {
allowRetries: true,
maxRetries: 3
@ -16810,14 +16811,15 @@ class DotnetCoreInstaller {
semver.satisfies(releaseInfo['sdk']['version-display'], versionInfo.version()));
});
// Exclude versions that are newer than the latest if using not exact
if (!versionInfo.isExactVersion()) {
let latestSdk = releasesResult['latest-sdk'];
releasesInfo = releasesInfo.filter((releaseInfo) => semver.lte(releaseInfo['sdk']['version'], latestSdk));
}
let latestSdk = releasesResult['latest-sdk'];
releasesInfo = releasesInfo.filter((releaseInfo) => semver.lte(releaseInfo['sdk']['version'], latestSdk));
// Sort for latest version
releasesInfo = releasesInfo.sort((a, b) => semver.rcompare(a['sdk']['version'], b['sdk']['version']));
let selectedVersion = releasesInfo[0]['sdk']['version'];
return selectedVersion;
if (releasesInfo.length == 0) {
throw `Could not construct download URL. Please ensure that specified version ${versionInfo.version()} is valid.`;
}
let release = releasesInfo[0];
return release['sdk']['version'];
});
}
getReleasesJsonUrl(httpClient, versionParts) {

View File

@ -96,7 +96,7 @@ export class DotnetCoreInstaller {
let output = '';
let resultCode = 0;
let calculatedVersion = await this.resolveInfos(
let calculatedVersion = await this.resolveVersion(
new DotNetVersionInfo(this.version)
);
@ -178,10 +178,12 @@ export class DotnetCoreInstaller {
}
}
// OsSuffixes - The suffix which is a part of the file name ex- linux-x64, windows-x86
// Type - SDK / Runtime
// versionInfo - versionInfo of the SDK/Runtime
async resolveInfos(versionInfo: DotNetVersionInfo): Promise<string> {
async resolveVersion(versionInfo: DotNetVersionInfo): Promise<string> {
if (versionInfo.isExactVersion()) {
return versionInfo.version();
}
const httpClient = new hc.HttpClient('actions/setup-dotnet', [], {
allowRetries: true,
maxRetries: 3
@ -209,22 +211,23 @@ export class DotnetCoreInstaller {
});
// Exclude versions that are newer than the latest if using not exact
if (!versionInfo.isExactVersion()) {
let latestSdk: string = releasesResult['latest-sdk'];
let latestSdk: string = releasesResult['latest-sdk'];
releasesInfo = releasesInfo.filter((releaseInfo: any) =>
semver.lte(releaseInfo['sdk']['version'], latestSdk)
);
}
releasesInfo = releasesInfo.filter((releaseInfo: any) =>
semver.lte(releaseInfo['sdk']['version'], latestSdk)
);
// Sort for latest version
releasesInfo = releasesInfo.sort((a, b) =>
semver.rcompare(a['sdk']['version'], b['sdk']['version'])
);
let selectedVersion = releasesInfo[0]['sdk']['version'];
if (releasesInfo.length == 0) {
throw `Could not construct download URL. Please ensure that specified version ${versionInfo.version()} is valid.`;
}
return selectedVersion;
let release = releasesInfo[0];
return release['sdk']['version'];
}
private async getReleasesJsonUrl(