mirror of
				https://github.com/actions/setup-go.git
				synced 2025-10-31 19:13:43 +00:00 
			
		
		
		
	Merge 18710d65d461dae76c4330c339cb990d2b6ed49e into 6f26dcc668f723b50085562b23062c5a4be16a3d
This commit is contained in:
		
						commit
						d5b7cae449
					
				
							
								
								
									
										24
									
								
								.github/workflows/outputs.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								.github/workflows/outputs.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,24 @@ | ||||
| name: Test outputs | ||||
| 
 | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - main | ||||
|   pull_request: | ||||
| 
 | ||||
| jobs: | ||||
|   setup-go-env: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - id: setup-go | ||||
|         uses: ./ | ||||
|       - run: | | ||||
|           echo GOPATH=${{ steps.setup-go.outputs.go-path }} | ||||
|           echo GOMOD=${{ steps.setup-go.outputs.go-mod }} | ||||
|           echo GOMODCACHE=${{ steps.setup-go.outputs.go-mod-cache }} | ||||
|           echo GOVERSION=${{ steps.setup-go.outputs.go-version }} | ||||
|           echo GOCACHE=${{ steps.setup-go.outputs.go-cache }} | ||||
| 
 | ||||
|           echo Go environment variables json: | ||||
|           jq . <<< '${{ steps.setup-go.outputs.go-env }}' | ||||
| @ -143,6 +143,29 @@ describe('setup-go', () => { | ||||
|     expect(main.parseGoVersion(goVersionOutput)).toBe('1.16.6'); | ||||
|   }); | ||||
| 
 | ||||
|   it('can read go env variables', async () => { | ||||
|     const goRoot = '/opt/hostedtoolcache/go/1.18.10/x64'; | ||||
|     const goPath = '/home/runner/go'; | ||||
|     const goModCache = '/home/runner/go/pkg/mod'; | ||||
|     const goCache = '/home/runner/.cache/go-build'; | ||||
|     const goVersion = 'go1.18.10'; | ||||
| 
 | ||||
|     const env = ` | ||||
| GOROOT="${goRoot}" | ||||
| GOPATH="${goPath}" | ||||
| GOMODCACHE="${goModCache}" | ||||
| GOCACHE="${goCache}" | ||||
| GOVERSION="${goVersion}" | ||||
|     `;
 | ||||
|     const json = JSON.parse(main.convertEnvStringToJson(env)); | ||||
|     expect(json).toBeDefined(); | ||||
|     expect(json['GOROOT']).toBe(goRoot); | ||||
|     expect(json['GOPATH']).toBe(goPath); | ||||
|     expect(json['GOMODCACHE']).toBe(goModCache); | ||||
|     expect(json['GOCACHE']).toBe(goCache); | ||||
|     expect(json['GOVERSION']).toBe(goVersion); | ||||
|   }); | ||||
| 
 | ||||
|   it('can find 1.9.7 from manifest on osx', async () => { | ||||
|     os.platform = 'darwin'; | ||||
|     os.arch = 'x64'; | ||||
|  | ||||
							
								
								
									
										12
									
								
								action.yml
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								action.yml
									
									
									
									
									
								
							| @ -22,6 +22,18 @@ inputs: | ||||
| outputs: | ||||
|   go-version: | ||||
|     description: 'The installed Go version. Useful when given a version range as input.' | ||||
|   go-cache: | ||||
|     description: 'The GOCACHE environment variable' | ||||
|   go-path: | ||||
|     description: 'The GOPATH environment variable' | ||||
|   go-root: | ||||
|     description: 'The GOROOT environment variable' | ||||
|   go-mod: | ||||
|     description: 'The GOMOD environment variable' | ||||
|   go-mod-cache: | ||||
|     description: 'The GOMODCACHE environment variable' | ||||
|   go-env: | ||||
|     description: 'The Go environment variables in JSON format' | ||||
|   cache-hit: | ||||
|     description: 'A boolean value to indicate if a cache was hit' | ||||
| runs: | ||||
|  | ||||
							
								
								
									
										31
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										31
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							| @ -93652,7 +93652,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { | ||||
|     return (mod && mod.__esModule) ? mod : { "default": mod }; | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||
| exports.parseGoVersion = exports.addBinToPath = exports.run = void 0; | ||||
| exports.convertEnvStringToJson = exports.parseGoVersion = exports.addBinToPath = exports.run = void 0; | ||||
| const core = __importStar(__nccwpck_require__(2186)); | ||||
| const io = __importStar(__nccwpck_require__(7436)); | ||||
| const installer = __importStar(__nccwpck_require__(2574)); | ||||
| @ -93700,11 +93700,19 @@ function run() { | ||||
|             core.debug(`add bin ${added}`); | ||||
|             const goPath = yield io.which('go'); | ||||
|             const goVersion = (child_process_1.default.execSync(`${goPath} version`) || '').toString(); | ||||
|             const goEnv = (child_process_1.default.execSync(`${goPath} env`) || '').toString(); | ||||
|             const goEnvJson = JSON.parse(convertEnvStringToJson(goEnv)); | ||||
|             const parsedGoVersion = parseGoVersion(goVersion); | ||||
|             // Go versions less that 1.16 do not have the GOVERSION environment variable
 | ||||
|             if (semver.lt(parsedGoVersion, '1.16.0')) { | ||||
|                 goEnvJson['GOVERSION'] = 'go' + parsedGoVersion; | ||||
|             } | ||||
|             core.info(goVersion); | ||||
|             if (cache && (0, cache_utils_1.isCacheFeatureAvailable)()) { | ||||
|                 const packageManager = 'default'; | ||||
|                 const cacheDependencyPath = core.getInput('cache-dependency-path'); | ||||
|                 try { | ||||
|                     yield (0, cache_restore_1.restoreCache)(parseGoVersion(goVersion), packageManager, cacheDependencyPath); | ||||
|                     yield (0, cache_restore_1.restoreCache)(parsedGoVersion, packageManager, cacheDependencyPath); | ||||
|                 } | ||||
|                 catch (error) { | ||||
|                     core.warning(`Restore cache failed: ${error.message}`); | ||||
| @ -93713,11 +93721,12 @@ function run() { | ||||
|             // add problem matchers
 | ||||
|             const matchersPath = path_1.default.join(__dirname, '../..', 'matchers.json'); | ||||
|             core.info(`##[add-matcher]${matchersPath}`); | ||||
|             // output the version actually being used
 | ||||
|             core.info(goVersion); | ||||
|             core.setOutput('go-version', parseGoVersion(goVersion)); | ||||
|             core.setOutput('go-version', parsedGoVersion); | ||||
|             core.setOutput('go-path', goEnvJson['GOPATH']); | ||||
|             core.setOutput('go-cache', goEnvJson['GOCACHE']); | ||||
|             core.setOutput('go-mod-cache', goEnvJson['GOMODCACHE']); | ||||
|             core.setOutput('go-env', goEnvJson); | ||||
|             core.startGroup('go env'); | ||||
|             const goEnv = (child_process_1.default.execSync(`${goPath} env`) || '').toString(); | ||||
|             core.info(goEnv); | ||||
|             core.endGroup(); | ||||
|         } | ||||
| @ -93765,6 +93774,16 @@ function parseGoVersion(versionString) { | ||||
|     return versionString.split(' ')[2].slice('go'.length); | ||||
| } | ||||
| exports.parseGoVersion = parseGoVersion; | ||||
| function convertEnvStringToJson(envString) { | ||||
|     const envArray = envString.split('\n'); | ||||
|     const envObject = {}; | ||||
|     envArray.forEach(envVar => { | ||||
|         const [key, value] = envVar.split(/=(?=")/); | ||||
|         envObject[key] = value === null || value === void 0 ? void 0 : value.replace(/"/g, ''); | ||||
|     }); | ||||
|     return JSON.stringify(envObject); | ||||
| } | ||||
| exports.convertEnvStringToJson = convertEnvStringToJson; | ||||
| function resolveVersionInput() { | ||||
|     let version = core.getInput('go-version'); | ||||
|     const versionFilePath = core.getInput('go-version-file'); | ||||
|  | ||||
							
								
								
									
										34
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								src/main.ts
									
									
									
									
									
								
							| @ -63,13 +63,23 @@ export async function run() { | ||||
| 
 | ||||
|     const goPath = await io.which('go'); | ||||
|     const goVersion = (cp.execSync(`${goPath} version`) || '').toString(); | ||||
|     const goEnv = (cp.execSync(`${goPath} env`) || '').toString(); | ||||
|     const goEnvJson = JSON.parse(convertEnvStringToJson(goEnv)); | ||||
|     const parsedGoVersion = parseGoVersion(goVersion); | ||||
| 
 | ||||
|     // Go versions less that 1.16 do not have the GOVERSION environment variable
 | ||||
|     if (semver.lt(parsedGoVersion, '1.16.0')) { | ||||
|       goEnvJson['GOVERSION'] = 'go' + parsedGoVersion; | ||||
|     } | ||||
| 
 | ||||
|     core.info(goVersion); | ||||
| 
 | ||||
|     if (cache && isCacheFeatureAvailable()) { | ||||
|       const packageManager = 'default'; | ||||
|       const cacheDependencyPath = core.getInput('cache-dependency-path'); | ||||
|       try { | ||||
|         await restoreCache( | ||||
|           parseGoVersion(goVersion), | ||||
|           parsedGoVersion, | ||||
|           packageManager, | ||||
|           cacheDependencyPath | ||||
|         ); | ||||
| @ -82,13 +92,13 @@ export async function run() { | ||||
|     const matchersPath = path.join(__dirname, '../..', 'matchers.json'); | ||||
|     core.info(`##[add-matcher]${matchersPath}`); | ||||
| 
 | ||||
|     // output the version actually being used
 | ||||
|     core.info(goVersion); | ||||
| 
 | ||||
|     core.setOutput('go-version', parseGoVersion(goVersion)); | ||||
|     core.setOutput('go-version', parsedGoVersion); | ||||
|     core.setOutput('go-path', goEnvJson['GOPATH']); | ||||
|     core.setOutput('go-cache', goEnvJson['GOCACHE']); | ||||
|     core.setOutput('go-mod-cache', goEnvJson['GOMODCACHE']); | ||||
|     core.setOutput('go-env', goEnvJson); | ||||
| 
 | ||||
|     core.startGroup('go env'); | ||||
|     const goEnv = (cp.execSync(`${goPath} env`) || '').toString(); | ||||
|     core.info(goEnv); | ||||
|     core.endGroup(); | ||||
|   } catch (error) { | ||||
| @ -135,6 +145,18 @@ export function parseGoVersion(versionString: string): string { | ||||
|   return versionString.split(' ')[2].slice('go'.length); | ||||
| } | ||||
| 
 | ||||
| export function convertEnvStringToJson(envString: string): string { | ||||
|   const envArray = envString.split('\n'); | ||||
|   const envObject: {[key: string]: string} = {}; | ||||
| 
 | ||||
|   envArray.forEach(envVar => { | ||||
|     const [key, value] = envVar.split(/=(?=")/); | ||||
|     envObject[key] = value?.replace(/"/g, ''); | ||||
|   }); | ||||
| 
 | ||||
|   return JSON.stringify(envObject); | ||||
| } | ||||
| 
 | ||||
| function resolveVersionInput(): string { | ||||
|   let version = core.getInput('go-version'); | ||||
|   const versionFilePath = core.getInput('go-version-file'); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user