Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Explicity set installation path #498

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 21 additions & 3 deletions dist/setup/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -93164,6 +93164,13 @@ class DotnetInstallScript {
this.scriptArguments.push(...args);
return this;
}
useInstallPath(installPath) {
if (installPath == null) {
installPath = DotnetInstallDir.dirPath;
}
this.useArguments(utils_1.IS_WINDOWS ? '-Install-Dir' : '--install-dir', installPath);
return this;
}
useVersion(dotnetVersion, quality) {
if (dotnetVersion.type) {
this.useArguments(dotnetVersion.type, dotnetVersion.value);
Expand All @@ -93189,6 +93196,15 @@ class DotnetInstallScript {
}
exports.DotnetInstallScript = DotnetInstallScript;
class DotnetInstallDir {
static getInstallDirectory() {
if (process.env['DOTNET_INSTALL_DIR'] != null) {
return process.env['DOTNET_INSTALL_DIR'];
}
if (process.env['RUNNER_TOOL_CACHE'] != null) {
return path_1.default.join(process.env['RUNNER_TOOL_CACHE'], 'dotnet');
}
return DotnetInstallDir.default[utils_1.PLATFORM];
}
static convertInstallPathToAbsolute(installDir) {
if (path_1.default.isAbsolute(installDir))
return path_1.default.normalize(installDir);
Expand All @@ -93211,9 +93227,7 @@ DotnetInstallDir.default = {
mac: path_1.default.join(process.env['HOME'] + '', '.dotnet'),
windows: path_1.default.join(process.env['PROGRAMFILES'] + '', 'dotnet')
};
DotnetInstallDir.dirPath = process.env['DOTNET_INSTALL_DIR']
? DotnetInstallDir.convertInstallPathToAbsolute(process.env['DOTNET_INSTALL_DIR'])
: DotnetInstallDir.default[utils_1.PLATFORM];
DotnetInstallDir.dirPath = DotnetInstallDir.convertInstallPathToAbsolute(DotnetInstallDir.getInstallDirectory());
class DotnetCoreInstaller {
constructor(version, quality) {
this.version = version;
Expand All @@ -93234,6 +93248,8 @@ class DotnetCoreInstaller {
.useArguments(utils_1.IS_WINDOWS ? '-Runtime' : '--runtime', 'dotnet')
// Use latest stable version
.useArguments(utils_1.IS_WINDOWS ? '-Channel' : '--channel', 'LTS')
// Explicitly set the install path (see https://github.com/actions/setup-dotnet/issues/360)
.useInstallPath(DotnetInstallDir.dirPath)
.execute();
if (runtimeInstallOutput.exitCode) {
/**
Expand All @@ -93251,6 +93267,8 @@ class DotnetCoreInstaller {
.useArguments(utils_1.IS_WINDOWS ? '-SkipNonVersionedFiles' : '--skip-non-versioned-files')
// Use version provided by user
.useVersion(dotnetVersion, this.quality)
// Explicitly set the install path (see https://github.com/actions/setup-dotnet/issues/360)
.useInstallPath(DotnetInstallDir.dirPath)
.execute();
if (dotnetInstallOutput.exitCode) {
throw new Error(`Failed to install dotnet, exit code: ${dotnetInstallOutput.exitCode}. ${dotnetInstallOutput.stderr}`);
Expand Down
34 changes: 29 additions & 5 deletions src/installer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,17 @@ export class DotnetInstallScript {
return this;
}

public useInstallPath(installPath: string) {
if (installPath == null) {
installPath = DotnetInstallDir.dirPath;
}
this.useArguments(
IS_WINDOWS ? '-Install-Dir' : '--install-dir',
installPath
);
return this;
}

public useVersion(dotnetVersion: DotnetVersion, quality?: QualityOptions) {
if (dotnetVersion.type) {
this.useArguments(dotnetVersion.type, dotnetVersion.value);
Expand Down Expand Up @@ -222,11 +233,20 @@ export abstract class DotnetInstallDir {
windows: path.join(process.env['PROGRAMFILES'] + '', 'dotnet')
};

public static readonly dirPath = process.env['DOTNET_INSTALL_DIR']
? DotnetInstallDir.convertInstallPathToAbsolute(
process.env['DOTNET_INSTALL_DIR']
)
: DotnetInstallDir.default[PLATFORM];
private static getInstallDirectory() {
if (process.env['DOTNET_INSTALL_DIR'] != null) {
return process.env['DOTNET_INSTALL_DIR'];
}
if (process.env['RUNNER_TOOL_CACHE'] != null) {
return path.join(process.env['RUNNER_TOOL_CACHE'], 'dotnet');
}
return DotnetInstallDir.default[PLATFORM];
}

public static readonly dirPath =
DotnetInstallDir.convertInstallPathToAbsolute(
DotnetInstallDir.getInstallDirectory()
);

private static convertInstallPathToAbsolute(installDir: string): string {
if (path.isAbsolute(installDir)) return path.normalize(installDir);
Expand Down Expand Up @@ -275,6 +295,8 @@ export class DotnetCoreInstaller {
.useArguments(IS_WINDOWS ? '-Runtime' : '--runtime', 'dotnet')
// Use latest stable version
.useArguments(IS_WINDOWS ? '-Channel' : '--channel', 'LTS')
// Explicitly set the install path (see https://github.com/actions/setup-dotnet/issues/360)
.useInstallPath(DotnetInstallDir.dirPath)
.execute();

if (runtimeInstallOutput.exitCode) {
Expand All @@ -298,6 +320,8 @@ export class DotnetCoreInstaller {
)
// Use version provided by user
.useVersion(dotnetVersion, this.quality)
// Explicitly set the install path (see https://github.com/actions/setup-dotnet/issues/360)
.useInstallPath(DotnetInstallDir.dirPath)
.execute();

if (dotnetInstallOutput.exitCode) {
Expand Down