From b928c2d2d61747ff6cc76b825ae586f31d71edc9 Mon Sep 17 00:00:00 2001 From: Zachary Eisinger Date: Thu, 16 Jul 2020 22:13:42 -0700 Subject: [PATCH] Avoid api calls for exact versions --- __tests__/installer.test.ts | 6 +++--- dist/index.js | 22 ++++++++++++---------- src/installer.ts | 27 +++++++++++++++------------ 3 files changed, 30 insertions(+), 25 deletions(-) diff --git a/__tests__/installer.test.ts b/__tests__/installer.test.ts index d112e86..1a0b55d 100644 --- a/__tests__/installer.test.ts +++ b/__tests__/installer.test.ts @@ -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 () => { diff --git a/dist/index.js b/dist/index.js index 1291ff9..dde3c14 100644 --- a/dist/index.js +++ b/dist/index.js @@ -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) { diff --git a/src/installer.ts b/src/installer.ts index 9686f26..33c690c 100644 --- a/src/installer.ts +++ b/src/installer.ts @@ -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 { + async resolveVersion(versionInfo: DotNetVersionInfo): Promise { + 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(