Implement passing includePrerelase to semver

This commit is contained in:
GGG KILLER
2020-07-16 19:23:46 -03:00
parent ba7e1e2155
commit 768b4eb7db
3 changed files with 41 additions and 17 deletions

View File

@ -29,7 +29,6 @@ export class DotNetVersionInfo {
return;
}
//Note: No support for previews when using generic
let parts: string[] = version.split('.');
if (parts.length < 2 || parts.length > 3) this.throwInvalidVersionFormat();
@ -76,8 +75,9 @@ export class DotNetVersionInfo {
}
export class DotnetCoreInstaller {
constructor(version: string) {
constructor(version: string, includePrerelease: boolean = false) {
this.version = version;
this.includePrerelease = includePrerelease;
}
public async installDotnet() {
@ -212,13 +212,15 @@ export class DotnetCoreInstaller {
let releasesInfo: any[] = releasesResult['releases'];
releasesInfo = releasesInfo.filter((releaseInfo: any) => {
return (
semver.satisfies(
releaseInfo['sdk']['version'],
versionInfo.version()
) ||
semver.satisfies(releaseInfo['sdk']['version'], versionInfo.version(), {
includePrerelease: this.includePrerelease
}) ||
semver.satisfies(
releaseInfo['sdk']['version-display'],
versionInfo.version()
versionInfo.version(),
{
includePrerelease: this.includePrerelease
}
)
);
});
@ -227,12 +229,16 @@ export class DotnetCoreInstaller {
let latestSdk: string = releasesResult['latest-sdk'];
releasesInfo = releasesInfo.filter((releaseInfo: any) =>
semver.lte(releaseInfo['sdk']['version'], latestSdk)
semver.lte(releaseInfo['sdk']['version'], latestSdk, {
includePrerelease: this.includePrerelease
})
);
// Sort for latest version
releasesInfo = releasesInfo.sort((a, b) =>
semver.rcompare(a['sdk']['version'], b['sdk']['version'])
semver.rcompare(a['sdk']['version'], b['sdk']['version'], {
includePrerelease: this.includePrerelease
})
);
if (releasesInfo.length == 0) {
@ -273,6 +279,7 @@ export class DotnetCoreInstaller {
}
private version: string;
private includePrerelease: boolean;
}
const DotNetCoreIndexUrl: string =

View File

@ -29,7 +29,14 @@ export async function run() {
}
if (version) {
const dotnetInstaller = new installer.DotnetCoreInstaller(version);
const includePrerelease: boolean =
(core.getInput('include-prerelease') || 'false').toLowerCase() ===
'true';
const dotnetInstaller = new installer.DotnetCoreInstaller(
version,
includePrerelease
);
await dotnetInstaller.installDotnet();
}