Add option to install runtime only

This commit is contained in:
Nikolai Laevskii 2023-09-04 06:58:36 +02:00
parent 174ee99b90
commit 44d36ccab9
4 changed files with 28 additions and 10 deletions

View File

@ -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:

14
dist/setup/index.js vendored
View File

@ -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);
}

View File

@ -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<string | null> {
@ -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(

View File

@ -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);