From 44d36ccab933ea8c7760aa0ed9d75cd42d08a157 Mon Sep 17 00:00:00 2001 From: Nikolai Laevskii Date: Mon, 4 Sep 2023 06:58:36 +0200 Subject: [PATCH] Add option to install runtime only --- action.yml | 4 ++++ dist/setup/index.js | 14 +++++++++----- src/installer.ts | 17 +++++++++++++---- src/setup-dotnet.ts | 3 ++- 4 files changed, 28 insertions(+), 10 deletions(-) diff --git a/action.yml b/action.yml index bf24aca..7aa2094 100644 --- a/action.yml +++ b/action.yml @@ -9,6 +9,10 @@ inputs: 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, 6.0.2xx' dotnet-quality: description: 'Optional quality of the build. The possible values are: daily, signed, validated, preview, ga.' + runtime-only: + description: 'Optional input to install only the runtime, not the SDK.' + required: false + default: false global-json-file: description: 'Optional global.json location, if your global.json isn''t located in the root of the repo.' source-url: diff --git a/dist/setup/index.js b/dist/setup/index.js index 15f9de8..9aff980 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -72993,9 +72993,10 @@ DotnetInstallDir.dirPath = process.env['DOTNET_INSTALL_DIR'] ? DotnetInstallDir.convertInstallPathToAbsolute(process.env['DOTNET_INSTALL_DIR']) : DotnetInstallDir.default[utils_1.PLATFORM]; class DotnetCoreInstaller { - constructor(dotnetVersion, quality) { + constructor(dotnetVersion, quality, runtimeOnly = false) { this.dotnetVersion = dotnetVersion; this.quality = quality; + this.runtimeOnly = runtimeOnly; } installDotnet() { return __awaiter(this, void 0, void 0, function* () { @@ -73022,12 +73023,15 @@ class DotnetCoreInstaller { * Install dotnet over the latest version of * dotnet CLI */ - const dotnetInstallOutput = yield new DotnetInstallScript() + const dotnetInstallScript = new DotnetInstallScript() // Don't overwrite CLI because it should be already installed .useArguments(utils_1.IS_WINDOWS ? '-SkipNonVersionedFiles' : '--skip-non-versioned-files') // Use version provided by user - .useVersion(this.dotnetVersion, this.quality) - .execute(); + .useVersion(this.dotnetVersion, this.quality); + if (this.runtimeOnly) { + dotnetInstallScript.useArguments(utils_1.IS_WINDOWS ? '-Runtime' : '--runtime', 'dotnet'); + } + const dotnetInstallOutput = yield dotnetInstallScript.execute(); if (dotnetInstallOutput.exitCode) { throw new Error(`Failed to install dotnet, exit code: ${dotnetInstallOutput.exitCode}. ${dotnetInstallOutput.stderr}`); } @@ -73154,7 +73158,7 @@ function run() { const uniqueVersions = new Set(versions); for (const version of uniqueVersions) { dotnetVersionResolver = new installer_1.DotnetVersionResolver(version); - dotnetInstaller = new installer_1.DotnetCoreInstaller(yield dotnetVersionResolver.createDotnetVersion(), quality); + dotnetInstaller = new installer_1.DotnetCoreInstaller(yield dotnetVersionResolver.createDotnetVersion(), quality, core.getBooleanInput('runtime-only')); const installedVersion = yield dotnetInstaller.installDotnet(); installedDotnetVersions.push(installedVersion); } diff --git a/src/installer.ts b/src/installer.ts index b93cb38..eacbe67 100644 --- a/src/installer.ts +++ b/src/installer.ts @@ -255,7 +255,8 @@ export class DotnetCoreInstaller { constructor( private readonly dotnetVersion: DotnetVersion, - private readonly quality: QualityOptions + private readonly quality: QualityOptions, + private readonly runtimeOnly = false ) {} public async installDotnet(): Promise { @@ -288,14 +289,22 @@ export class DotnetCoreInstaller { * Install dotnet over the latest version of * dotnet CLI */ - const dotnetInstallOutput = await new DotnetInstallScript() + const dotnetInstallScript = new DotnetInstallScript() // Don't overwrite CLI because it should be already installed .useArguments( IS_WINDOWS ? '-SkipNonVersionedFiles' : '--skip-non-versioned-files' ) // Use version provided by user - .useVersion(this.dotnetVersion, this.quality) - .execute(); + .useVersion(this.dotnetVersion, this.quality); + + if (this.runtimeOnly) { + dotnetInstallScript.useArguments( + IS_WINDOWS ? '-Runtime' : '--runtime', + 'dotnet' + ); + } + + const dotnetInstallOutput = await dotnetInstallScript.execute(); if (dotnetInstallOutput.exitCode) { throw new Error( diff --git a/src/setup-dotnet.ts b/src/setup-dotnet.ts index 729ba56..0691c46 100644 --- a/src/setup-dotnet.ts +++ b/src/setup-dotnet.ts @@ -78,7 +78,8 @@ export async function run() { dotnetVersionResolver = new DotnetVersionResolver(version); dotnetInstaller = new DotnetCoreInstaller( await dotnetVersionResolver.createDotnetVersion(), - quality + quality, + core.getBooleanInput('runtime-only') ); const installedVersion = await dotnetInstaller.installDotnet(); installedDotnetVersions.push(installedVersion);