From e968ad80c6893295c54757fa9a632409370f9bfc Mon Sep 17 00:00:00 2001 From: dsame Date: Wed, 8 Nov 2023 09:20:14 +0100 Subject: [PATCH] change install dir --- dist/setup/index.js | 20 +++++++++++++++++--- src/installer.ts | 18 +++++++++++++++--- src/utils.ts | 4 ++++ 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/dist/setup/index.js b/dist/setup/index.js index 7567a1b..7f07bca 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -72836,7 +72836,7 @@ const core = __importStar(__nccwpck_require__(2186)); const exec = __importStar(__nccwpck_require__(1514)); const io = __importStar(__nccwpck_require__(7436)); const hc = __importStar(__nccwpck_require__(6255)); -const fs_1 = __nccwpck_require__(7147); +const fs_1 = __importStar(__nccwpck_require__(7147)); const path_1 = __importDefault(__nccwpck_require__(1017)); const os_1 = __importDefault(__nccwpck_require__(2037)); const semver_1 = __importDefault(__nccwpck_require__(5911)); @@ -73008,6 +73008,16 @@ class DotnetInstallScript { } } exports.DotnetInstallScript = DotnetInstallScript; +// Workaround for slow installation on Windows with network attached C: drive +// see https://github.com/actions/setup-dotnet/issues/260 +const fixWindowsInstallDir = (installDir) => { + if (!(0, utils_1.isSelfHosted)() && fs_1.default.existsSync('d:\\')) { + return installDir.replace(/^[cC]:\\/, 'd:\\'); + } + else { + return installDir; + } +}; class DotnetInstallDir { static convertInstallPathToAbsolute(installDir) { if (path_1.default.isAbsolute(installDir)) @@ -73029,7 +73039,7 @@ exports.DotnetInstallDir = DotnetInstallDir; DotnetInstallDir.default = { linux: '/usr/share/dotnet', mac: path_1.default.join(process.env['HOME'] + '', '.dotnet'), - windows: path_1.default.join(process.env['PROGRAMFILES'] + '', 'dotnet') + windows: fixWindowsInstallDir(path_1.default.join(process.env['PROGRAMFILES'] + '', 'dotnet')) }; DotnetInstallDir.dirPath = process.env['DOTNET_INSTALL_DIR'] ? DotnetInstallDir.convertInstallPathToAbsolute(process.env['DOTNET_INSTALL_DIR']) @@ -73272,7 +73282,7 @@ run(); "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.PLATFORM = exports.IS_WINDOWS = void 0; +exports.isSelfHosted = exports.PLATFORM = exports.IS_WINDOWS = void 0; exports.IS_WINDOWS = process.platform === 'win32'; exports.PLATFORM = (() => { if (process.platform === 'win32') @@ -73281,6 +73291,10 @@ exports.PLATFORM = (() => { return 'linux'; return 'mac'; })(); +const isSelfHosted = () => process.env['AGENT_ISSELFHOSTED'] === '1' || + (process.env['AGENT_ISSELFHOSTED'] === undefined && + process.env['RUNNER_ENVIRONMENT'] !== 'github-hosted'); +exports.isSelfHosted = isSelfHosted; /***/ }), diff --git a/src/installer.ts b/src/installer.ts index 4900afa..e871eaa 100644 --- a/src/installer.ts +++ b/src/installer.ts @@ -3,11 +3,11 @@ import * as core from '@actions/core'; import * as exec from '@actions/exec'; import * as io from '@actions/io'; import * as hc from '@actions/http-client'; -import {chmodSync} from 'fs'; +import fs, {chmodSync} from 'fs'; import path from 'path'; import os from 'os'; import semver from 'semver'; -import {IS_WINDOWS, PLATFORM} from './utils'; +import {IS_WINDOWS, isSelfHosted, PLATFORM} from './utils'; import {QualityOptions} from './setup-dotnet'; export interface DotnetVersion { @@ -215,11 +215,23 @@ export class DotnetInstallScript { } } +// Workaround for slow installation on Windows with network attached C: drive +// see https://github.com/actions/setup-dotnet/issues/260 +const fixWindowsInstallDir = (installDir: string): string => { + if (!isSelfHosted() && fs.existsSync('d:\\')) { + return installDir.replace(/^[cC]:\\/, 'd:\\'); + } else { + return installDir; + } +}; + export abstract class DotnetInstallDir { private static readonly default = { linux: '/usr/share/dotnet', mac: path.join(process.env['HOME'] + '', '.dotnet'), - windows: path.join(process.env['PROGRAMFILES'] + '', 'dotnet') + windows: fixWindowsInstallDir( + path.join(process.env['PROGRAMFILES'] + '', 'dotnet') + ) }; public static readonly dirPath = process.env['DOTNET_INSTALL_DIR'] diff --git a/src/utils.ts b/src/utils.ts index 1871168..4d60d3d 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -4,3 +4,7 @@ export const PLATFORM = ((): 'windows' | 'linux' | 'mac' => { if (process.platform === 'linux') return 'linux'; return 'mac'; })(); +export const isSelfHosted = (): boolean => + process.env['AGENT_ISSELFHOSTED'] === '1' || + (process.env['AGENT_ISSELFHOSTED'] === undefined && + process.env['RUNNER_ENVIRONMENT'] !== 'github-hosted');