mirror of
				https://github.com/actions/setup-dotnet.git
				synced 2025-10-31 23:43:44 +00:00 
			
		
		
		
	Enable ability to change .NET SDK installation directory by DOTNET_INSTALL_DIR environment variable (#329)
				
					
				
			This commit is contained in:
		
							parent
							
								
									c7e7147fd3
								
							
						
					
					
						commit
						45c9f236cf
					
				| @ -195,6 +195,7 @@ Some environment variables may be necessary for your particular case or to impro | |||||||
| 
 | 
 | ||||||
| | **Env.variable**      | **Description** | **Default value** | | | **Env.variable**      | **Description** | **Default value** | | ||||||
| | ----------- | ----------- | ----------- | | | ----------- | ----------- | ----------- | | ||||||
|  | | DOTNET_INSTALL_DIR      |Specifies a directory where .NET SDKs should be installed by the action|*isn't set*| | ||||||
| | DOTNET_NOLOGO      |Removes logo and telemetry message from first run of dotnet cli|*false*| | | DOTNET_NOLOGO      |Removes logo and telemetry message from first run of dotnet cli|*false*| | ||||||
| | DOTNET_CLI_TELEMETRY_OPTOUT   |Opt-out of telemetry being sent to Microsoft|*false*| | | DOTNET_CLI_TELEMETRY_OPTOUT   |Opt-out of telemetry being sent to Microsoft|*false*| | ||||||
| | DOTNET_MULTILEVEL_LOOKUP   |Configures whether the global install location is used as a fall-back|*true*| | | DOTNET_MULTILEVEL_LOOKUP   |Configures whether the global install location is used as a fall-back|*true*| | ||||||
| @ -204,7 +205,7 @@ Some environment variables may be necessary for your particular case or to impro | |||||||
| build: | build: | ||||||
|   runs-on: ubuntu-latest |   runs-on: ubuntu-latest | ||||||
|   env: |   env: | ||||||
|     DOTNET_NOLOGO: true |     DOTNET_INSTALL_DIR: "path/to/directory" | ||||||
|   steps: |   steps: | ||||||
|     - uses: actions/checkout@main |     - uses: actions/checkout@main | ||||||
|     - uses: actions/setup-dotnet@v3 |     - uses: actions/setup-dotnet@v3 | ||||||
|  | |||||||
							
								
								
									
										27
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										27
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							| @ -333,8 +333,10 @@ class DotnetCoreInstaller { | |||||||
|                 if (process.env['no_proxy'] != null) { |                 if (process.env['no_proxy'] != null) { | ||||||
|                     scriptArguments.push(`-ProxyBypassList ${process.env['no_proxy']}`); |                     scriptArguments.push(`-ProxyBypassList ${process.env['no_proxy']}`); | ||||||
|                 } |                 } | ||||||
|                 scriptArguments.push('-InstallDir', `'${DotnetCoreInstaller.installationDirectoryWindows}'`); |                 if (!process.env['DOTNET_INSTALL_DIR']) { | ||||||
|                 // process.env must be explicitly passed in for DOTNET_INSTALL_DIR to be used
 |                     process.env['DOTNET_INSTALL_DIR'] = | ||||||
|  |                         DotnetCoreInstaller.installationDirectoryWindows; | ||||||
|  |                 } | ||||||
|                 scriptPath = |                 scriptPath = | ||||||
|                     (yield io.which('pwsh', false)) || (yield io.which('powershell', true)); |                     (yield io.which('pwsh', false)) || (yield io.which('powershell', true)); | ||||||
|                 scriptArguments = windowsDefaultOptions.concat(scriptArguments); |                 scriptArguments = windowsDefaultOptions.concat(scriptArguments); | ||||||
| @ -349,18 +351,22 @@ class DotnetCoreInstaller { | |||||||
|                 if (this.quality) { |                 if (this.quality) { | ||||||
|                     this.setQuality(dotnetVersion, scriptArguments); |                     this.setQuality(dotnetVersion, scriptArguments); | ||||||
|                 } |                 } | ||||||
|                 if (utils_1.IS_LINUX) { |                 if (!process.env['DOTNET_INSTALL_DIR']) { | ||||||
|                     scriptArguments.push('--install-dir', DotnetCoreInstaller.installationDirectoryLinux); |                     process.env['DOTNET_INSTALL_DIR'] = utils_1.IS_LINUX | ||||||
|                 } |                         ? DotnetCoreInstaller.installationDirectoryLinux | ||||||
|                 if (utils_1.IS_MAC) { |                         : DotnetCoreInstaller.installationDirectoryMac; | ||||||
|                     scriptArguments.push('--install-dir', DotnetCoreInstaller.installationDirectoryMac); |  | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|             const { exitCode, stdout } = yield exec.getExecOutput(`"${scriptPath}"`, scriptArguments, { ignoreReturnCode: true }); |             // process.env must be explicitly passed in for DOTNET_INSTALL_DIR to be used
 | ||||||
|  |             const getExecOutputOptions = { | ||||||
|  |                 ignoreReturnCode: true, | ||||||
|  |                 env: process.env | ||||||
|  |             }; | ||||||
|  |             const { exitCode, stdout } = yield exec.getExecOutput(`"${scriptPath}"`, scriptArguments, getExecOutputOptions); | ||||||
|             if (exitCode) { |             if (exitCode) { | ||||||
|                 throw new Error(`Failed to install dotnet ${exitCode}. ${stdout}`); |                 throw new Error(`Failed to install dotnet ${exitCode}. ${stdout}`); | ||||||
|             } |             } | ||||||
|             return this.outputDotnetVersion(dotnetVersion.value, scriptArguments[scriptArguments.length - 1]); |             return this.outputDotnetVersion(dotnetVersion.value, process.env['DOTNET_INSTALL_DIR']); | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
|     outputDotnetVersion(version, installationPath) { |     outputDotnetVersion(version, installationPath) { | ||||||
| @ -523,10 +529,9 @@ run(); | |||||||
| "use strict"; | "use strict"; | ||||||
| 
 | 
 | ||||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||||
| exports.IS_MAC = exports.IS_LINUX = exports.IS_WINDOWS = void 0; | exports.IS_LINUX = exports.IS_WINDOWS = void 0; | ||||||
| exports.IS_WINDOWS = process.platform === 'win32'; | exports.IS_WINDOWS = process.platform === 'win32'; | ||||||
| exports.IS_LINUX = process.platform === 'linux'; | exports.IS_LINUX = process.platform === 'linux'; | ||||||
| exports.IS_MAC = process.platform === 'darwin'; |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
|  | |||||||
							
								
								
									
										4
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -1,12 +1,12 @@ | |||||||
| { | { | ||||||
|   "name": "setup-dotnet", |   "name": "setup-dotnet", | ||||||
|   "version": "3.0.0", |   "version": "3.0.1", | ||||||
|   "lockfileVersion": 2, |   "lockfileVersion": 2, | ||||||
|   "requires": true, |   "requires": true, | ||||||
|   "packages": { |   "packages": { | ||||||
|     "": { |     "": { | ||||||
|       "name": "setup-dotnet", |       "name": "setup-dotnet", | ||||||
|       "version": "3.0.0", |       "version": "3.0.1", | ||||||
|       "license": "MIT", |       "license": "MIT", | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "@actions/core": "^1.9.1", |         "@actions/core": "^1.9.1", | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "setup-dotnet", |   "name": "setup-dotnet", | ||||||
|   "version": "3.0.0", |   "version": "3.0.1", | ||||||
|   "private": true, |   "private": true, | ||||||
|   "description": "setup dotnet action", |   "description": "setup dotnet action", | ||||||
|   "main": "lib/setup-dotnet.js", |   "main": "lib/setup-dotnet.js", | ||||||
|  | |||||||
| @ -7,7 +7,7 @@ import {chmodSync} from 'fs'; | |||||||
| import {readdir} from 'fs/promises'; | import {readdir} from 'fs/promises'; | ||||||
| import path from 'path'; | import path from 'path'; | ||||||
| import semver from 'semver'; | import semver from 'semver'; | ||||||
| import {IS_LINUX, IS_WINDOWS, IS_MAC} from './utils'; | import {IS_LINUX, IS_WINDOWS} from './utils'; | ||||||
| import {QualityOptions} from './setup-dotnet'; | import {QualityOptions} from './setup-dotnet'; | ||||||
| 
 | 
 | ||||||
| export interface DotnetVersion { | export interface DotnetVersion { | ||||||
| @ -208,11 +208,11 @@ export class DotnetCoreInstaller { | |||||||
|         scriptArguments.push(`-ProxyBypassList ${process.env['no_proxy']}`); |         scriptArguments.push(`-ProxyBypassList ${process.env['no_proxy']}`); | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|       scriptArguments.push( |       if (!process.env['DOTNET_INSTALL_DIR']) { | ||||||
|         '-InstallDir', |         process.env['DOTNET_INSTALL_DIR'] = | ||||||
|         `'${DotnetCoreInstaller.installationDirectoryWindows}'` |           DotnetCoreInstaller.installationDirectoryWindows; | ||||||
|       ); |       } | ||||||
|       // process.env must be explicitly passed in for DOTNET_INSTALL_DIR to be used
 | 
 | ||||||
|       scriptPath = |       scriptPath = | ||||||
|         (await io.which('pwsh', false)) || (await io.which('powershell', true)); |         (await io.which('pwsh', false)) || (await io.which('powershell', true)); | ||||||
|       scriptArguments = windowsDefaultOptions.concat(scriptArguments); |       scriptArguments = windowsDefaultOptions.concat(scriptArguments); | ||||||
| @ -229,24 +229,21 @@ export class DotnetCoreInstaller { | |||||||
|         this.setQuality(dotnetVersion, scriptArguments); |         this.setQuality(dotnetVersion, scriptArguments); | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|       if (IS_LINUX) { |       if (!process.env['DOTNET_INSTALL_DIR']) { | ||||||
|         scriptArguments.push( |         process.env['DOTNET_INSTALL_DIR'] = IS_LINUX | ||||||
|           '--install-dir', |           ? DotnetCoreInstaller.installationDirectoryLinux | ||||||
|           DotnetCoreInstaller.installationDirectoryLinux |           : DotnetCoreInstaller.installationDirectoryMac; | ||||||
|         ); |  | ||||||
|       } |  | ||||||
| 
 |  | ||||||
|       if (IS_MAC) { |  | ||||||
|         scriptArguments.push( |  | ||||||
|           '--install-dir', |  | ||||||
|           DotnetCoreInstaller.installationDirectoryMac |  | ||||||
|         ); |  | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|  |     // process.env must be explicitly passed in for DOTNET_INSTALL_DIR to be used
 | ||||||
|  |     const getExecOutputOptions = { | ||||||
|  |       ignoreReturnCode: true, | ||||||
|  |       env: process.env as {string: string} | ||||||
|  |     }; | ||||||
|     const {exitCode, stdout} = await exec.getExecOutput( |     const {exitCode, stdout} = await exec.getExecOutput( | ||||||
|       `"${scriptPath}"`, |       `"${scriptPath}"`, | ||||||
|       scriptArguments, |       scriptArguments, | ||||||
|       {ignoreReturnCode: true} |       getExecOutputOptions | ||||||
|     ); |     ); | ||||||
|     if (exitCode) { |     if (exitCode) { | ||||||
|       throw new Error(`Failed to install dotnet ${exitCode}. ${stdout}`); |       throw new Error(`Failed to install dotnet ${exitCode}. ${stdout}`); | ||||||
| @ -254,7 +251,7 @@ export class DotnetCoreInstaller { | |||||||
| 
 | 
 | ||||||
|     return this.outputDotnetVersion( |     return this.outputDotnetVersion( | ||||||
|       dotnetVersion.value, |       dotnetVersion.value, | ||||||
|       scriptArguments[scriptArguments.length - 1] |       process.env['DOTNET_INSTALL_DIR'] | ||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,3 +1,2 @@ | |||||||
| export const IS_WINDOWS = process.platform === 'win32'; | export const IS_WINDOWS = process.platform === 'win32'; | ||||||
| export const IS_LINUX = process.platform === 'linux'; | export const IS_LINUX = process.platform === 'linux'; | ||||||
| export const IS_MAC = process.platform === 'darwin'; |  | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user