format
This commit is contained in:
		
							parent
							
								
									4282769cc0
								
							
						
					
					
						commit
						dc575ee3b3
					
				| @ -7,7 +7,7 @@ import {run} from '../src/main'; | |||||||
| import * as httpm from '@actions/http-client'; | import * as httpm from '@actions/http-client'; | ||||||
| import * as im from '../src/installer'; | import * as im from '../src/installer'; | ||||||
| import * as sys from '../src/system'; | import * as sys from '../src/system'; | ||||||
| import { ITypedResponse } from '@actions/http-client/interfaces'; | import {ITypedResponse} from '@actions/http-client/interfaces'; | ||||||
| 
 | 
 | ||||||
| let goJsonData = require('./data/golang-dl.json'); | let goJsonData = require('./data/golang-dl.json'); | ||||||
| 
 | 
 | ||||||
| @ -28,12 +28,15 @@ describe('setup-go', () => { | |||||||
|     cnSpy = jest.spyOn(process.stdout, 'write'); |     cnSpy = jest.spyOn(process.stdout, 'write'); | ||||||
|     platSpy = jest.spyOn(sys, 'getPlatform'); |     platSpy = jest.spyOn(sys, 'getPlatform'); | ||||||
|     archSpy = jest.spyOn(sys, 'getArch'); |     archSpy = jest.spyOn(sys, 'getArch'); | ||||||
|     dlSpy = jest.spyOn(tc, "downloadTool"); |     dlSpy = jest.spyOn(tc, 'downloadTool'); | ||||||
|     exSpy = jest.spyOn(tc, "extractTar"); |     exSpy = jest.spyOn(tc, 'extractTar'); | ||||||
|     getSpy = jest.spyOn(http, 'getJson'); |     getSpy = jest.spyOn(http, 'getJson'); | ||||||
|     getSpy.mockImplementation(() => <ITypedResponse<im.IGoVersion[]>>{  |     getSpy.mockImplementation( | ||||||
|  |       () => | ||||||
|  |         <ITypedResponse<im.IGoVersion[]>>{ | ||||||
|           result: goJsonData |           result: goJsonData | ||||||
|     });     |         } | ||||||
|  |     ); | ||||||
|     cnSpy.mockImplementation(line => { |     cnSpy.mockImplementation(line => { | ||||||
|       // uncomment to debug
 |       // uncomment to debug
 | ||||||
|       //process.stderr.write('write2:' + line + '\n');
 |       //process.stderr.write('write2:' + line + '\n');
 | ||||||
| @ -49,7 +52,7 @@ describe('setup-go', () => { | |||||||
|   afterAll(async () => {}, 100000); |   afterAll(async () => {}, 100000); | ||||||
| 
 | 
 | ||||||
|   it('finds a version of go already in the cache', async () => { |   it('finds a version of go already in the cache', async () => { | ||||||
|     inSpy.mockImplementation(() => '1.13.0') |     inSpy.mockImplementation(() => '1.13.0'); | ||||||
|     let toolPath = path.normalize('/cache/go/1.13.0/x64'); |     let toolPath = path.normalize('/cache/go/1.13.0/x64'); | ||||||
|     tcSpy.mockImplementation(() => toolPath); |     tcSpy.mockImplementation(() => toolPath); | ||||||
|     await run(); |     await run(); | ||||||
| @ -79,11 +82,13 @@ describe('setup-go', () => { | |||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|   it('can mock go versions query', async () => { |   it('can mock go versions query', async () => { | ||||||
|     let r: ITypedResponse<im.IGoVersion[]> = await http.getJson<im.IGoVersion[]>('https://asite.notexist.com/path'); |     let r: ITypedResponse<im.IGoVersion[]> = await http.getJson< | ||||||
|  |       im.IGoVersion[] | ||||||
|  |     >('https://asite.notexist.com/path'); | ||||||
|     expect(r).toBeDefined(); |     expect(r).toBeDefined(); | ||||||
|     let versions = r.result; |     let versions = r.result; | ||||||
|     expect(versions).toBeDefined(); |     expect(versions).toBeDefined(); | ||||||
|     let l:number = versions? versions.length: 0;  |     let l: number = versions ? versions.length : 0; | ||||||
|     expect(l).toBe(76); |     expect(l).toBe(76); | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
| @ -97,7 +102,7 @@ describe('setup-go', () => { | |||||||
|     expect(match).toBeDefined(); |     expect(match).toBeDefined(); | ||||||
|     let version: string = match ? match.version : ''; |     let version: string = match ? match.version : ''; | ||||||
|     expect(version).toBe('go1.13.1'); |     expect(version).toBe('go1.13.1'); | ||||||
|     let fileName = match ? match.files[0].filename: ''; |     let fileName = match ? match.files[0].filename : ''; | ||||||
|     expect(fileName).toBe('go1.13.1.linux-amd64.tar.gz'); |     expect(fileName).toBe('go1.13.1.linux-amd64.tar.gz'); | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
| @ -110,7 +115,7 @@ describe('setup-go', () => { | |||||||
|     expect(match).toBeDefined(); |     expect(match).toBeDefined(); | ||||||
|     let version: string = match ? match.version : ''; |     let version: string = match ? match.version : ''; | ||||||
|     expect(version).toBe('go1.13'); |     expect(version).toBe('go1.13'); | ||||||
|     let fileName = match ? match.files[0].filename: ''; |     let fileName = match ? match.files[0].filename : ''; | ||||||
|     expect(fileName).toBe('go1.13.linux-amd64.tar.gz'); |     expect(fileName).toBe('go1.13.linux-amd64.tar.gz'); | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
| @ -123,7 +128,7 @@ describe('setup-go', () => { | |||||||
|     expect(match).toBeDefined(); |     expect(match).toBeDefined(); | ||||||
|     let version: string = match ? match.version : ''; |     let version: string = match ? match.version : ''; | ||||||
|     expect(version).toBe('go1.13.7'); |     expect(version).toBe('go1.13.7'); | ||||||
|     let fileName = match ? match.files[0].filename: ''; |     let fileName = match ? match.files[0].filename : ''; | ||||||
|     expect(fileName).toBe('go1.13.7.linux-amd64.tar.gz'); |     expect(fileName).toBe('go1.13.7.linux-amd64.tar.gz'); | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
| @ -136,7 +141,7 @@ describe('setup-go', () => { | |||||||
|     expect(match).toBeDefined(); |     expect(match).toBeDefined(); | ||||||
|     let version: string = match ? match.version : ''; |     let version: string = match ? match.version : ''; | ||||||
|     expect(version).toBe('go1.13.7'); |     expect(version).toBe('go1.13.7'); | ||||||
|     let fileName = match ? match.files[0].filename: ''; |     let fileName = match ? match.files[0].filename : ''; | ||||||
|     expect(fileName).toBe('go1.13.7.linux-amd64.tar.gz'); |     expect(fileName).toBe('go1.13.7.linux-amd64.tar.gz'); | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
| @ -149,7 +154,7 @@ describe('setup-go', () => { | |||||||
|     expect(match).toBeDefined(); |     expect(match).toBeDefined(); | ||||||
|     let version: string = match ? match.version : ''; |     let version: string = match ? match.version : ''; | ||||||
|     expect(version).toBe('go1.13.7'); |     expect(version).toBe('go1.13.7'); | ||||||
|     let fileName = match ? match.files[0].filename: ''; |     let fileName = match ? match.files[0].filename : ''; | ||||||
|     expect(fileName).toBe('go1.13.7.linux-amd64.tar.gz'); |     expect(fileName).toBe('go1.13.7.linux-amd64.tar.gz'); | ||||||
|   }); |   }); | ||||||
| }); | }); | ||||||
|  | |||||||
							
								
								
									
										8
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							| @ -1287,7 +1287,7 @@ function run() { | |||||||
|             // If not supplied then problem matchers will still be setup.  Useful for self-hosted.
 |             // If not supplied then problem matchers will still be setup.  Useful for self-hosted.
 | ||||||
|             //
 |             //
 | ||||||
|             let versionSpec = core.getInput('go-version'); |             let versionSpec = core.getInput('go-version'); | ||||||
|             let stable = (core.getInput('stable') || '').toUpperCase() == "TRUE"; |             let stable = (core.getInput('stable') || '').toUpperCase() == 'TRUE'; | ||||||
|             if (versionSpec) { |             if (versionSpec) { | ||||||
|                 let installDir = tc.find('go', versionSpec); |                 let installDir = tc.find('go', versionSpec); | ||||||
|                 if (!installDir) { |                 if (!installDir) { | ||||||
| @ -4591,8 +4591,9 @@ function downloadGo(versionSpec, stable) { | |||||||
|                 let downloadUrl = `https://storage.googleapis.com/golang/${match.files[0]}`; |                 let downloadUrl = `https://storage.googleapis.com/golang/${match.files[0]}`; | ||||||
|                 let downloadPath = yield tc.downloadTool(downloadUrl); |                 let downloadPath = yield tc.downloadTool(downloadUrl); | ||||||
|                 // extract
 |                 // extract
 | ||||||
|                 let extPath = sys.getPlatform() == 'windows' ? |                 let extPath = sys.getPlatform() == 'windows' | ||||||
|                     yield tc.extractZip(downloadPath) : yield tc.extractTar(downloadPath); |                     ? yield tc.extractZip(downloadPath) | ||||||
|  |                     : yield tc.extractTar(downloadPath); | ||||||
|                 // extracts with a root folder that matches the fileName downloaded
 |                 // extracts with a root folder that matches the fileName downloaded
 | ||||||
|                 const toolRoot = path.join(extPath, 'go'); |                 const toolRoot = path.join(extPath, 'go'); | ||||||
|                 toolPath = yield tc.cacheDir(toolRoot, 'go', versionSpec); |                 toolPath = yield tc.cacheDir(toolRoot, 'go', versionSpec); | ||||||
| @ -4638,7 +4639,6 @@ function findMatch(versionSpec, stable) { | |||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         ; |  | ||||||
|         if (match && goFile) { |         if (match && goFile) { | ||||||
|             match.files = [goFile]; |             match.files = [goFile]; | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -30,8 +30,9 @@ function downloadGo(versionSpec, stable) { | |||||||
|                 let downloadUrl = `https://storage.googleapis.com/golang/${match.files[0]}`; |                 let downloadUrl = `https://storage.googleapis.com/golang/${match.files[0]}`; | ||||||
|                 let downloadPath = yield tc.downloadTool(downloadUrl); |                 let downloadPath = yield tc.downloadTool(downloadUrl); | ||||||
|                 // extract
 |                 // extract
 | ||||||
|                 let extPath = sys.getPlatform() == 'windows' ? |                 let extPath = sys.getPlatform() == 'windows' | ||||||
|                     yield tc.extractZip(downloadPath) : yield tc.extractTar(downloadPath); |                     ? yield tc.extractZip(downloadPath) | ||||||
|  |                     : yield tc.extractTar(downloadPath); | ||||||
|                 // extracts with a root folder that matches the fileName downloaded
 |                 // extracts with a root folder that matches the fileName downloaded
 | ||||||
|                 const toolRoot = path.join(extPath, 'go'); |                 const toolRoot = path.join(extPath, 'go'); | ||||||
|                 toolPath = yield tc.cacheDir(toolRoot, 'go', versionSpec); |                 toolPath = yield tc.cacheDir(toolRoot, 'go', versionSpec); | ||||||
| @ -77,7 +78,6 @@ function findMatch(versionSpec, stable) { | |||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         ; |  | ||||||
|         if (match && goFile) { |         if (match && goFile) { | ||||||
|             match.files = [goFile]; |             match.files = [goFile]; | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -1,10 +1,13 @@ | |||||||
| import * as tc from '@actions/tool-cache'; | import * as tc from '@actions/tool-cache'; | ||||||
| import * as path from 'path'; | import * as path from 'path'; | ||||||
| import * as semver from 'semver'; | import * as semver from 'semver'; | ||||||
| import * as httpm from '@actions/http-client' | import * as httpm from '@actions/http-client'; | ||||||
| import * as sys from './system' | import * as sys from './system'; | ||||||
| 
 | 
 | ||||||
| export async function downloadGo(versionSpec: string, stable: boolean): Promise<string | undefined> { | export async function downloadGo( | ||||||
|  |   versionSpec: string, | ||||||
|  |   stable: boolean | ||||||
|  | ): Promise<string | undefined> { | ||||||
|   let toolPath: string | undefined; |   let toolPath: string | undefined; | ||||||
| 
 | 
 | ||||||
|   try { |   try { | ||||||
| @ -16,8 +19,10 @@ export async function downloadGo(versionSpec: string, stable: boolean): Promise< | |||||||
|       let downloadPath: string = await tc.downloadTool(downloadUrl); |       let downloadPath: string = await tc.downloadTool(downloadUrl); | ||||||
| 
 | 
 | ||||||
|       // extract
 |       // extract
 | ||||||
|       let extPath: string = sys.getPlatform() == 'windows'? |       let extPath: string = | ||||||
|         await tc.extractZip(downloadPath): await tc.extractTar(downloadPath); |         sys.getPlatform() == 'windows' | ||||||
|  |           ? await tc.extractZip(downloadPath) | ||||||
|  |           : await tc.extractTar(downloadPath); | ||||||
| 
 | 
 | ||||||
|       // extracts with a root folder that matches the fileName downloaded
 |       // extracts with a root folder that matches the fileName downloaded
 | ||||||
|       const toolRoot = path.join(extPath, 'go'); |       const toolRoot = path.join(extPath, 'go'); | ||||||
| @ -31,10 +36,10 @@ export async function downloadGo(versionSpec: string, stable: boolean): Promise< | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export interface IGoVersionFile { | export interface IGoVersionFile { | ||||||
|   filename: string, |   filename: string; | ||||||
|   // darwin, linux, windows
 |   // darwin, linux, windows
 | ||||||
|   os: string, |   os: string; | ||||||
|   arch: string |   arch: string; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export interface IGoVersion { | export interface IGoVersion { | ||||||
| @ -43,23 +48,28 @@ export interface IGoVersion { | |||||||
|   files: IGoVersionFile[]; |   files: IGoVersionFile[]; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export async function findMatch(versionSpec: string, stable: boolean): Promise<IGoVersion | undefined> { | export async function findMatch( | ||||||
|  |   versionSpec: string, | ||||||
|  |   stable: boolean | ||||||
|  | ): Promise<IGoVersion | undefined> { | ||||||
|   let archFilter = sys.getArch(); |   let archFilter = sys.getArch(); | ||||||
|   let platFilter = sys.getPlatform(); |   let platFilter = sys.getPlatform(); | ||||||
| 
 | 
 | ||||||
|   let match: IGoVersion| undefined; |   let match: IGoVersion | undefined; | ||||||
|   const dlUrl: string = 'https://golang.org/dl/?mode=json&include=all'; |   const dlUrl: string = 'https://golang.org/dl/?mode=json&include=all'; | ||||||
| 
 | 
 | ||||||
|   // this returns versions descending so latest is first
 |   // this returns versions descending so latest is first
 | ||||||
|   let http: httpm.HttpClient = new httpm.HttpClient('setup-go'); |   let http: httpm.HttpClient = new httpm.HttpClient('setup-go'); | ||||||
|   let candidates: IGoVersion[] | null =  (await http.getJson<IGoVersion[]>(dlUrl)).result; |   let candidates: IGoVersion[] | null = (await http.getJson<IGoVersion[]>( | ||||||
|  |     dlUrl | ||||||
|  |   )).result; | ||||||
| 
 | 
 | ||||||
|   if (!candidates) { |   if (!candidates) { | ||||||
|     throw new Error(`golang download url did not return results: ${dlUrl}`); |     throw new Error(`golang download url did not return results: ${dlUrl}`); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   let goFile: IGoVersionFile | undefined; |   let goFile: IGoVersionFile | undefined; | ||||||
|   for (let i=0; i < candidates.length; i++) { |   for (let i = 0; i < candidates.length; i++) { | ||||||
|     let candidate: IGoVersion = candidates[i]; |     let candidate: IGoVersion = candidates[i]; | ||||||
|     let version = candidate.version.replace('go', ''); |     let version = candidate.version.replace('go', ''); | ||||||
| 
 | 
 | ||||||
| @ -81,10 +91,10 @@ export async function findMatch(versionSpec: string, stable: boolean): Promise<I | |||||||
|         break; |         break; | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   }; |   } | ||||||
| 
 | 
 | ||||||
|   if (match && goFile) { |   if (match && goFile) { | ||||||
|     match.files = [ goFile ]; |     match.files = [goFile]; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   return match; |   return match; | ||||||
|  | |||||||
							
								
								
									
										10
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								src/main.ts
									
									
									
									
									
								
							| @ -10,7 +10,8 @@ export async function run() { | |||||||
|     // If not supplied then problem matchers will still be setup.  Useful for self-hosted.
 |     // If not supplied then problem matchers will still be setup.  Useful for self-hosted.
 | ||||||
|     //
 |     //
 | ||||||
|     let versionSpec = core.getInput('go-version'); |     let versionSpec = core.getInput('go-version'); | ||||||
|     let stable: boolean = (core.getInput('stable') || '').toUpperCase() == "TRUE"; |     let stable: boolean = | ||||||
|  |       (core.getInput('stable') || '').toUpperCase() == 'TRUE'; | ||||||
| 
 | 
 | ||||||
|     if (versionSpec) { |     if (versionSpec) { | ||||||
|       let installDir: string | undefined = tc.find('go', versionSpec); |       let installDir: string | undefined = tc.find('go', versionSpec); | ||||||
| @ -22,9 +23,10 @@ export async function run() { | |||||||
|       if (installDir) { |       if (installDir) { | ||||||
|         core.exportVariable('GOROOT', installDir); |         core.exportVariable('GOROOT', installDir); | ||||||
|         core.addPath(path.join(installDir, 'bin')); |         core.addPath(path.join(installDir, 'bin')); | ||||||
|         }    |       } else { | ||||||
|         else { |         throw new Error( | ||||||
|             throw new Error(`Could not find a version that satisfied version spec: ${versionSpec}`); |           `Could not find a version that satisfied version spec: ${versionSpec}` | ||||||
|  |         ); | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,3 +1,3 @@ | |||||||
| import {run} from './main' | import {run} from './main'; | ||||||
| 
 | 
 | ||||||
| run(); | run(); | ||||||
|  | |||||||
| @ -13,9 +13,9 @@ export function getPlatform(): string { | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   return plat; |   return plat; | ||||||
|   } | } | ||||||
| 
 | 
 | ||||||
|   export function getArch(): string { | export function getArch(): string { | ||||||
|   // 'arm', 'arm64', 'ia32', 'mips', 'mipsel', 'ppc', 'ppc64', 's390', 's390x', 'x32', and 'x64'.
 |   // 'arm', 'arm64', 'ia32', 'mips', 'mipsel', 'ppc', 'ppc64', 's390', 's390x', 'x32', and 'x64'.
 | ||||||
|   let arch: string = os.arch(); |   let arch: string = os.arch(); | ||||||
| 
 | 
 | ||||||
| @ -34,4 +34,4 @@ export function getPlatform(): string { | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   return arch; |   return arch; | ||||||
|   } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user