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 () => { it('Resolving a exact preview version works', async () => {
const dotnetInstaller = new installer.DotnetCoreInstaller( const dotnetInstaller = new installer.DotnetCoreInstaller(
'5.0.0-preview.4' '5.0.0-preview.6'
); );
let versInfo = await dotnetInstaller.resolveInfos( 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); }, 100000);
it('Acquires version of dotnet if no matching version is installed', async () => { it('Acquires version of dotnet if no matching version is installed', async () => {

18
dist/index.js vendored
View File

@ -16723,7 +16723,7 @@ class DotnetCoreInstaller {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
let output = ''; let output = '';
let resultCode = 0; let resultCode = 0;
let calculatedVersion = yield this.resolveInfos(new DotNetVersionInfo(this.version)); let calculatedVersion = yield this.resolveVersion(new DotNetVersionInfo(this.version));
var envVariables = {}; var envVariables = {};
for (let key in process.env) { for (let key in process.env) {
if (process.env[key]) { 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 // versionInfo - versionInfo of the SDK/Runtime
resolveInfos(versionInfo) { resolveVersion(versionInfo) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
if (versionInfo.isExactVersion()) {
return versionInfo.version();
}
const httpClient = new hc.HttpClient('actions/setup-dotnet', [], { const httpClient = new hc.HttpClient('actions/setup-dotnet', [], {
allowRetries: true, allowRetries: true,
maxRetries: 3 maxRetries: 3
@ -16810,14 +16811,15 @@ class DotnetCoreInstaller {
semver.satisfies(releaseInfo['sdk']['version-display'], versionInfo.version())); semver.satisfies(releaseInfo['sdk']['version-display'], versionInfo.version()));
}); });
// Exclude versions that are newer than the latest if using not exact // Exclude versions that are newer than the latest if using not exact
if (!versionInfo.isExactVersion()) {
let latestSdk = releasesResult['latest-sdk']; let latestSdk = releasesResult['latest-sdk'];
releasesInfo = releasesInfo.filter((releaseInfo) => semver.lte(releaseInfo['sdk']['version'], latestSdk)); releasesInfo = releasesInfo.filter((releaseInfo) => semver.lte(releaseInfo['sdk']['version'], latestSdk));
}
// Sort for latest version // Sort for latest version
releasesInfo = releasesInfo.sort((a, b) => semver.rcompare(a['sdk']['version'], b['sdk']['version'])); releasesInfo = releasesInfo.sort((a, b) => semver.rcompare(a['sdk']['version'], b['sdk']['version']));
let selectedVersion = releasesInfo[0]['sdk']['version']; if (releasesInfo.length == 0) {
return selectedVersion; 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) { getReleasesJsonUrl(httpClient, versionParts) {

View File

@ -96,7 +96,7 @@ export class DotnetCoreInstaller {
let output = ''; let output = '';
let resultCode = 0; let resultCode = 0;
let calculatedVersion = await this.resolveInfos( let calculatedVersion = await this.resolveVersion(
new DotNetVersionInfo(this.version) 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 // 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', [], { const httpClient = new hc.HttpClient('actions/setup-dotnet', [], {
allowRetries: true, allowRetries: true,
maxRetries: 3 maxRetries: 3
@ -209,22 +211,23 @@ export class DotnetCoreInstaller {
}); });
// Exclude versions that are newer than the latest if using not exact // 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) => releasesInfo = releasesInfo.filter((releaseInfo: any) =>
semver.lte(releaseInfo['sdk']['version'], latestSdk) semver.lte(releaseInfo['sdk']['version'], latestSdk)
); );
}
// Sort for latest version // Sort for latest version
releasesInfo = releasesInfo.sort((a, b) => releasesInfo = releasesInfo.sort((a, b) =>
semver.rcompare(a['sdk']['version'], b['sdk']['version']) 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( private async getReleasesJsonUrl(