mirror of
				https://github.com/actions/setup-dotnet.git
				synced 2025-10-31 15:53:45 +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** | | ||||
| | ----------- | ----------- | ----------- | | ||||
| | 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_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*| | ||||
| @ -204,7 +205,7 @@ Some environment variables may be necessary for your particular case or to impro | ||||
| build: | ||||
|   runs-on: ubuntu-latest | ||||
|   env: | ||||
|     DOTNET_NOLOGO: true | ||||
|     DOTNET_INSTALL_DIR: "path/to/directory" | ||||
|   steps: | ||||
|     - uses: actions/checkout@main | ||||
|     - 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) { | ||||
|                     scriptArguments.push(`-ProxyBypassList ${process.env['no_proxy']}`); | ||||
|                 } | ||||
|                 scriptArguments.push('-InstallDir', `'${DotnetCoreInstaller.installationDirectoryWindows}'`); | ||||
|                 // process.env must be explicitly passed in for DOTNET_INSTALL_DIR to be used
 | ||||
|                 if (!process.env['DOTNET_INSTALL_DIR']) { | ||||
|                     process.env['DOTNET_INSTALL_DIR'] = | ||||
|                         DotnetCoreInstaller.installationDirectoryWindows; | ||||
|                 } | ||||
|                 scriptPath = | ||||
|                     (yield io.which('pwsh', false)) || (yield io.which('powershell', true)); | ||||
|                 scriptArguments = windowsDefaultOptions.concat(scriptArguments); | ||||
| @ -349,18 +351,22 @@ class DotnetCoreInstaller { | ||||
|                 if (this.quality) { | ||||
|                     this.setQuality(dotnetVersion, scriptArguments); | ||||
|                 } | ||||
|                 if (utils_1.IS_LINUX) { | ||||
|                     scriptArguments.push('--install-dir', DotnetCoreInstaller.installationDirectoryLinux); | ||||
|                 } | ||||
|                 if (utils_1.IS_MAC) { | ||||
|                     scriptArguments.push('--install-dir', DotnetCoreInstaller.installationDirectoryMac); | ||||
|                 if (!process.env['DOTNET_INSTALL_DIR']) { | ||||
|                     process.env['DOTNET_INSTALL_DIR'] = utils_1.IS_LINUX | ||||
|                         ? DotnetCoreInstaller.installationDirectoryLinux | ||||
|                         : 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) { | ||||
|                 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) { | ||||
| @ -523,10 +529,9 @@ run(); | ||||
| "use strict"; | ||||
| 
 | ||||
| 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_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", | ||||
|   "version": "3.0.0", | ||||
|   "version": "3.0.1", | ||||
|   "lockfileVersion": 2, | ||||
|   "requires": true, | ||||
|   "packages": { | ||||
|     "": { | ||||
|       "name": "setup-dotnet", | ||||
|       "version": "3.0.0", | ||||
|       "version": "3.0.1", | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "@actions/core": "^1.9.1", | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "setup-dotnet", | ||||
|   "version": "3.0.0", | ||||
|   "version": "3.0.1", | ||||
|   "private": true, | ||||
|   "description": "setup dotnet action", | ||||
|   "main": "lib/setup-dotnet.js", | ||||
|  | ||||
| @ -7,7 +7,7 @@ import {chmodSync} from 'fs'; | ||||
| import {readdir} from 'fs/promises'; | ||||
| import path from 'path'; | ||||
| 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'; | ||||
| 
 | ||||
| export interface DotnetVersion { | ||||
| @ -208,11 +208,11 @@ export class DotnetCoreInstaller { | ||||
|         scriptArguments.push(`-ProxyBypassList ${process.env['no_proxy']}`); | ||||
|       } | ||||
| 
 | ||||
|       scriptArguments.push( | ||||
|         '-InstallDir', | ||||
|         `'${DotnetCoreInstaller.installationDirectoryWindows}'` | ||||
|       ); | ||||
|       // process.env must be explicitly passed in for DOTNET_INSTALL_DIR to be used
 | ||||
|       if (!process.env['DOTNET_INSTALL_DIR']) { | ||||
|         process.env['DOTNET_INSTALL_DIR'] = | ||||
|           DotnetCoreInstaller.installationDirectoryWindows; | ||||
|       } | ||||
| 
 | ||||
|       scriptPath = | ||||
|         (await io.which('pwsh', false)) || (await io.which('powershell', true)); | ||||
|       scriptArguments = windowsDefaultOptions.concat(scriptArguments); | ||||
| @ -229,24 +229,21 @@ export class DotnetCoreInstaller { | ||||
|         this.setQuality(dotnetVersion, scriptArguments); | ||||
|       } | ||||
| 
 | ||||
|       if (IS_LINUX) { | ||||
|         scriptArguments.push( | ||||
|           '--install-dir', | ||||
|           DotnetCoreInstaller.installationDirectoryLinux | ||||
|         ); | ||||
|       } | ||||
| 
 | ||||
|       if (IS_MAC) { | ||||
|         scriptArguments.push( | ||||
|           '--install-dir', | ||||
|           DotnetCoreInstaller.installationDirectoryMac | ||||
|         ); | ||||
|       if (!process.env['DOTNET_INSTALL_DIR']) { | ||||
|         process.env['DOTNET_INSTALL_DIR'] = IS_LINUX | ||||
|           ? DotnetCoreInstaller.installationDirectoryLinux | ||||
|           : 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( | ||||
|       `"${scriptPath}"`, | ||||
|       scriptArguments, | ||||
|       {ignoreReturnCode: true} | ||||
|       getExecOutputOptions | ||||
|     ); | ||||
|     if (exitCode) { | ||||
|       throw new Error(`Failed to install dotnet ${exitCode}. ${stdout}`); | ||||
| @ -254,7 +251,7 @@ export class DotnetCoreInstaller { | ||||
| 
 | ||||
|     return this.outputDotnetVersion( | ||||
|       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_LINUX = process.platform === 'linux'; | ||||
| export const IS_MAC = process.platform === 'darwin'; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user