Merge pull request #571 from crazy-max/update-dev
chore: update dev dependencies and workflow
This commit is contained in:
		
						commit
						75c825aabc
					
				
							
								
								
									
										23
									
								
								.eslintrc.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								.eslintrc.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,23 @@ | |||||||
|  | { | ||||||
|  |   "env": { | ||||||
|  |     "node": true, | ||||||
|  |     "es2021": true, | ||||||
|  |     "jest/globals": true | ||||||
|  |   }, | ||||||
|  |   "extends": [ | ||||||
|  |     "eslint:recommended", | ||||||
|  |     "plugin:@typescript-eslint/recommended", | ||||||
|  |     "plugin:jest/recommended", | ||||||
|  |     "plugin:prettier/recommended" | ||||||
|  |   ], | ||||||
|  |   "parser": "@typescript-eslint/parser", | ||||||
|  |   "parserOptions": { | ||||||
|  |     "ecmaVersion": "latest", | ||||||
|  |     "sourceType": "module" | ||||||
|  |   }, | ||||||
|  |   "plugins": [ | ||||||
|  |     "@typescript-eslint", | ||||||
|  |     "jest", | ||||||
|  |     "prettier" | ||||||
|  |   ] | ||||||
|  | } | ||||||
							
								
								
									
										18
									
								
								.github/workflows/virtual-env.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										18
									
								
								.github/workflows/virtual-env.yml
									
									
									
									
										vendored
									
									
								
							| @ -19,15 +19,33 @@ jobs: | |||||||
|       - |       - | ||||||
|         name: File system |         name: File system | ||||||
|         run: df -ah |         run: df -ah | ||||||
|  |       - | ||||||
|  |         name: Mounts | ||||||
|  |         run: mount | ||||||
|  |       - | ||||||
|  |         name: Node info | ||||||
|  |         run: node -p process | ||||||
|  |       - | ||||||
|  |         name: NPM version | ||||||
|  |         run: npm version | ||||||
|       - |       - | ||||||
|         name: List install packages |         name: List install packages | ||||||
|         run: apt list --installed |         run: apt list --installed | ||||||
|  |       - | ||||||
|  |         name: Docker daemon conf | ||||||
|  |         run: | | ||||||
|  |           cat /etc/docker/daemon.json | ||||||
|       - |       - | ||||||
|         name: Docker info |         name: Docker info | ||||||
|         run: docker info |         run: docker info | ||||||
|       - |       - | ||||||
|         name: Docker version |         name: Docker version | ||||||
|         run: docker version |         run: docker version | ||||||
|  |       - | ||||||
|  |         name: Cgroups | ||||||
|  |         run: | | ||||||
|  |           sudo apt-get install -y cgroup-tools | ||||||
|  |           lscgroup | ||||||
|       - |       - | ||||||
|         name: buildx version |         name: buildx version | ||||||
|         run: docker buildx version |         run: docker buildx version | ||||||
|  | |||||||
| @ -1,8 +1,8 @@ | |||||||
|  | import {describe, expect, it, jest, test} from '@jest/globals'; | ||||||
| import * as fs from 'fs'; | import * as fs from 'fs'; | ||||||
| import * as path from 'path'; | import * as path from 'path'; | ||||||
| import * as semver from 'semver'; | import * as semver from 'semver'; | ||||||
| import * as exec from '@actions/exec'; | import * as exec from '@actions/exec'; | ||||||
| 
 |  | ||||||
| import * as buildx from '../src/buildx'; | import * as buildx from '../src/buildx'; | ||||||
| import * as context from '../src/context'; | import * as context from '../src/context'; | ||||||
| 
 | 
 | ||||||
| @ -53,69 +53,25 @@ describe('getDigest', () => { | |||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| describe('isLocalOrTarExporter', () => { | describe('isLocalOrTarExporter', () => { | ||||||
|   // prettier-ignore
 |  | ||||||
|   test.each([ |   test.each([ | ||||||
|     [ |     [['type=registry,ref=user/app'], false], | ||||||
|       [ |     [['type=docker'], false], | ||||||
|         'type=registry,ref=user/app', |     [['type=local,dest=./release-out'], true], | ||||||
|       ], |     [['type=tar,dest=/tmp/image.tar'], true], | ||||||
|       false |     [['type=docker', 'type=tar,dest=/tmp/image.tar'], true], | ||||||
|     ], |     [['"type=tar","dest=/tmp/image.tar"'], true], | ||||||
|     [ |     [['" type= local" , dest=./release-out'], true], | ||||||
|       [ |     [['.'], true] | ||||||
|         'type=docker', |   ])('given %p returns %p', async (outputs: Array<string>, expected: boolean) => { | ||||||
|       ], |     expect(buildx.isLocalOrTarExporter(outputs)).toEqual(expected); | ||||||
|       false |   }); | ||||||
|     ], |  | ||||||
|     [ |  | ||||||
|       [ |  | ||||||
|         'type=local,dest=./release-out' |  | ||||||
|       ], |  | ||||||
|       true |  | ||||||
|     ], |  | ||||||
|     [ |  | ||||||
|       [ |  | ||||||
|         'type=tar,dest=/tmp/image.tar' |  | ||||||
|       ], |  | ||||||
|       true |  | ||||||
|     ], |  | ||||||
|     [ |  | ||||||
|       [ |  | ||||||
|         'type=docker', |  | ||||||
|         'type=tar,dest=/tmp/image.tar' |  | ||||||
|       ], |  | ||||||
|       true |  | ||||||
|     ], |  | ||||||
|     [ |  | ||||||
|       [ |  | ||||||
|         '"type=tar","dest=/tmp/image.tar"' |  | ||||||
|       ], |  | ||||||
|       true |  | ||||||
|     ], |  | ||||||
|     [ |  | ||||||
|       [ |  | ||||||
|         '" type= local" , dest=./release-out' |  | ||||||
|       ], |  | ||||||
|       true |  | ||||||
|     ], |  | ||||||
|     [ |  | ||||||
|       [ |  | ||||||
|         '.' |  | ||||||
|       ], |  | ||||||
|       true |  | ||||||
|     ], |  | ||||||
|   ])( |  | ||||||
|     'given %p returns %p', |  | ||||||
|     async (outputs: Array<string>, expected: boolean) => { |  | ||||||
|       expect(buildx.isLocalOrTarExporter(outputs)).toEqual(expected); |  | ||||||
|     } |  | ||||||
|   ); |  | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| describe('isAvailable', () => { | describe('isAvailable', () => { | ||||||
|   const execSpy: jest.SpyInstance = jest.spyOn(exec, 'getExecOutput'); |   const execSpy = jest.spyOn(exec, 'getExecOutput'); | ||||||
|   buildx.isAvailable(); |   buildx.isAvailable(); | ||||||
| 
 | 
 | ||||||
|  |   // eslint-disable-next-line jest/no-standalone-expect
 | ||||||
|   expect(execSpy).toHaveBeenCalledWith(`docker`, ['buildx'], { |   expect(execSpy).toHaveBeenCalledWith(`docker`, ['buildx'], { | ||||||
|     silent: true, |     silent: true, | ||||||
|     ignoreReturnCode: true |     ignoreReturnCode: true | ||||||
| @ -123,24 +79,10 @@ describe('isAvailable', () => { | |||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| describe('getVersion', () => { | describe('getVersion', () => { | ||||||
|   async function isDaemonRunning() { |   it('valid', async () => { | ||||||
|     return await exec |     const version = await buildx.getVersion(); | ||||||
|       .getExecOutput(`docker`, ['version', '--format', '{{.Server.Os}}'], { |     expect(semver.valid(version)).not.toBeNull(); | ||||||
|         ignoreReturnCode: true, |   }); | ||||||
|         silent: true |  | ||||||
|       }) |  | ||||||
|       .then(res => { |  | ||||||
|         return !res.stdout.includes(' ') && res.exitCode == 0; |  | ||||||
|       }); |  | ||||||
|   } |  | ||||||
|   (isDaemonRunning() ? it : it.skip)( |  | ||||||
|     'valid', |  | ||||||
|     async () => { |  | ||||||
|       const version = await buildx.getVersion(); |  | ||||||
|       expect(semver.valid(version)).not.toBeNull(); |  | ||||||
|     }, |  | ||||||
|     100000 |  | ||||||
|   ); |  | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| describe('parseVersion', () => { | describe('parseVersion', () => { | ||||||
| @ -187,6 +129,7 @@ describe('getSecret', () => { | |||||||
|       const secretValue = await fs.readFileSync(tmpNameSync, 'utf-8'); |       const secretValue = await fs.readFileSync(tmpNameSync, 'utf-8'); | ||||||
|       expect(secretValue).toEqual(exValue); |       expect(secretValue).toEqual(exValue); | ||||||
|     } catch (err) { |     } catch (err) { | ||||||
|  |       // eslint-disable-next-line jest/no-conditional-expect
 | ||||||
|       expect(true).toBe(invalid); |       expect(true).toBe(invalid); | ||||||
|     } |     } | ||||||
|   }); |   }); | ||||||
|  | |||||||
| @ -1,3 +1,4 @@ | |||||||
|  | import {beforeEach, describe, expect, it, jest, test} from '@jest/globals'; | ||||||
| import * as fs from 'fs'; | import * as fs from 'fs'; | ||||||
| import * as os from 'os'; | import * as os from 'os'; | ||||||
| import * as path from 'path'; | import * as path from 'path'; | ||||||
| @ -517,8 +518,8 @@ nproc=3`], | |||||||
|     ], |     ], | ||||||
|   ])( |   ])( | ||||||
|     '[%d] given %p with %p as inputs, returns %p', |     '[%d] given %p with %p as inputs, returns %p', | ||||||
|     async (num: number, buildxVersion: string, inputs: Map<string, any>, expected: Array<string>) => { |     async (num: number, buildxVersion: string, inputs: Map<string, string>, expected: Array<string>) => { | ||||||
|       await inputs.forEach((value: string, name: string) => { |       inputs.forEach((value: string, name: string) => { | ||||||
|         setInput(name, value); |         setInput(name, value); | ||||||
|       }); |       }); | ||||||
|       const defContext = context.defaultContext(); |       const defContext = context.defaultContext(); | ||||||
| @ -666,7 +667,7 @@ FOO=bar` | |||||||
|     expect(res).toEqual([ |     expect(res).toEqual([ | ||||||
|       'GIT_AUTH_TOKEN=abcdefgh,ijklmno=0123456789', |       'GIT_AUTH_TOKEN=abcdefgh,ijklmno=0123456789', | ||||||
|       `MYSECRET=aaaaaaaa
 |       `MYSECRET=aaaaaaaa
 | ||||||
| bbbb\"bbb | bbbb"bbb | ||||||
| ccccccccc`,
 | ccccccccc`,
 | ||||||
|       'FOO=bar' |       'FOO=bar' | ||||||
|     ]); |     ]); | ||||||
| @ -688,19 +689,22 @@ describe('asyncForEach', () => { | |||||||
| 
 | 
 | ||||||
| describe('setOutput', () => { | describe('setOutput', () => { | ||||||
|   beforeEach(() => { |   beforeEach(() => { | ||||||
|     process.stdout.write = jest.fn(); |     process.stdout.write = jest.fn() as typeof process.stdout.write; | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|  |   // eslint-disable-next-line jest/expect-expect
 | ||||||
|   it('setOutput produces the correct command', () => { |   it('setOutput produces the correct command', () => { | ||||||
|     context.setOutput('some output', 'some value'); |     context.setOutput('some output', 'some value'); | ||||||
|     assertWriteCalls([`::set-output name=some output::some value${os.EOL}`]); |     assertWriteCalls([`::set-output name=some output::some value${os.EOL}`]); | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|  |   // eslint-disable-next-line jest/expect-expect
 | ||||||
|   it('setOutput handles bools', () => { |   it('setOutput handles bools', () => { | ||||||
|     context.setOutput('some output', false); |     context.setOutput('some output', false); | ||||||
|     assertWriteCalls([`::set-output name=some output::false${os.EOL}`]); |     assertWriteCalls([`::set-output name=some output::false${os.EOL}`]); | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|  |   // eslint-disable-next-line jest/expect-expect
 | ||||||
|   it('setOutput handles numbers', () => { |   it('setOutput handles numbers', () => { | ||||||
|     context.setOutput('some output', 1.01); |     context.setOutput('some output', 1.01); | ||||||
|     assertWriteCalls([`::set-output name=some output::1.01${os.EOL}`]); |     assertWriteCalls([`::set-output name=some output::1.01${os.EOL}`]); | ||||||
|  | |||||||
| @ -1,8 +1,8 @@ | |||||||
| # syntax=docker/dockerfile:1.3-labs | # syntax=docker/dockerfile:1.4 | ||||||
| 
 | 
 | ||||||
| ARG NODE_VERSION | ARG NODE_VERSION=12 | ||||||
| ARG DOCKER_VERSION=20.10.10 | ARG DOCKER_VERSION=20.10.13 | ||||||
| ARG BUILDX_VERSION=0.7.0 | ARG BUILDX_VERSION=0.8.0 | ||||||
| 
 | 
 | ||||||
| FROM node:${NODE_VERSION}-alpine AS base | FROM node:${NODE_VERSION}-alpine AS base | ||||||
| RUN apk add --no-cache cpio findutils git | RUN apk add --no-cache cpio findutils git | ||||||
| @ -57,10 +57,10 @@ RUN --mount=type=bind,target=.,rw \ | |||||||
| FROM scratch AS format-update | FROM scratch AS format-update | ||||||
| COPY --from=format /out / | COPY --from=format /out / | ||||||
| 
 | 
 | ||||||
| FROM deps AS format-validate | FROM deps AS lint | ||||||
| RUN --mount=type=bind,target=.,rw \ | RUN --mount=type=bind,target=.,rw \ | ||||||
|   --mount=type=cache,target=/src/node_modules \ |   --mount=type=cache,target=/src/node_modules \ | ||||||
|   yarn run format-check |   yarn run lint | ||||||
| 
 | 
 | ||||||
| FROM docker:${DOCKER_VERSION} as docker | FROM docker:${DOCKER_VERSION} as docker | ||||||
| FROM docker/buildx-bin:${BUILDX_VERSION} as buildx | FROM docker/buildx-bin:${BUILDX_VERSION} as buildx | ||||||
							
								
								
									
										27907
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										27907
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1
									
								
								dist/index.js.map
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								dist/index.js.map
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1045
									
								
								dist/licenses.txt
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1045
									
								
								dist/licenses.txt
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1
									
								
								dist/sourcemap-register.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								dist/sourcemap-register.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -1,13 +1,3 @@ | |||||||
| variable "NODE_VERSION" { |  | ||||||
|   default = "12" |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| target "node-version" { |  | ||||||
|   args = { |  | ||||||
|     NODE_VERSION = NODE_VERSION |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| group "default" { | group "default" { | ||||||
|   targets = ["build"] |   targets = ["build"] | ||||||
| } | } | ||||||
| @ -17,54 +7,47 @@ group "pre-checkin" { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| group "validate" { | group "validate" { | ||||||
|   targets = ["format-validate", "build-validate", "vendor-validate"] |   targets = ["lint", "build-validate", "vendor-validate"] | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| target "build" { | target "build" { | ||||||
|   inherits = ["node-version"] |   dockerfile = "dev.Dockerfile" | ||||||
|   dockerfile = "./hack/build.Dockerfile" |  | ||||||
|   target = "build-update" |   target = "build-update" | ||||||
|   output = ["."] |   output = ["."] | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| target "build-validate" { | target "build-validate" { | ||||||
|   inherits = ["node-version"] |   dockerfile = "dev.Dockerfile" | ||||||
|   dockerfile = "./hack/build.Dockerfile" |  | ||||||
|   target = "build-validate" |   target = "build-validate" | ||||||
|   output = ["type=cacheonly"] |   output = ["type=cacheonly"] | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| target "format" { | target "format" { | ||||||
|   inherits = ["node-version"] |   dockerfile = "dev.Dockerfile" | ||||||
|   dockerfile = "./hack/build.Dockerfile" |  | ||||||
|   target = "format-update" |   target = "format-update" | ||||||
|   output = ["."] |   output = ["."] | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| target "format-validate" { | target "lint" { | ||||||
|   inherits = ["node-version"] |   dockerfile = "dev.Dockerfile" | ||||||
|   dockerfile = "./hack/build.Dockerfile" |   target = "lint" | ||||||
|   target = "format-validate" |  | ||||||
|   output = ["type=cacheonly"] |   output = ["type=cacheonly"] | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| target "vendor-update" { | target "vendor-update" { | ||||||
|   inherits = ["node-version"] |   dockerfile = "dev.Dockerfile" | ||||||
|   dockerfile = "./hack/build.Dockerfile" |  | ||||||
|   target = "vendor-update" |   target = "vendor-update" | ||||||
|   output = ["."] |   output = ["."] | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| target "vendor-validate" { | target "vendor-validate" { | ||||||
|   inherits = ["node-version"] |   dockerfile = "dev.Dockerfile" | ||||||
|   dockerfile = "./hack/build.Dockerfile" |  | ||||||
|   target = "vendor-validate" |   target = "vendor-validate" | ||||||
|   output = ["type=cacheonly"] |   output = ["type=cacheonly"] | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| target "test" { | target "test" { | ||||||
|   inherits = ["node-version"] |   dockerfile = "dev.Dockerfile" | ||||||
|   dockerfile = "./hack/build.Dockerfile" |  | ||||||
|   target = "test-coverage" |   target = "test-coverage" | ||||||
|   output = ["./coverage"] |   output = ["./coverage"] | ||||||
| } | } | ||||||
|  | |||||||
| @ -2,11 +2,9 @@ module.exports = { | |||||||
|   clearMocks: false, |   clearMocks: false, | ||||||
|   moduleFileExtensions: ['js', 'ts'], |   moduleFileExtensions: ['js', 'ts'], | ||||||
|   setupFiles: ["dotenv/config"], |   setupFiles: ["dotenv/config"], | ||||||
|   testEnvironment: 'node', |  | ||||||
|   testMatch: ['**/*.test.ts'], |   testMatch: ['**/*.test.ts'], | ||||||
|   testRunner: 'jest-circus/runner', |  | ||||||
|   transform: { |   transform: { | ||||||
|     '^.+\\.ts$': 'ts-jest' |     '^.+\\.ts$': 'ts-jest' | ||||||
|   }, |   }, | ||||||
|   verbose: false |   verbose: true | ||||||
| } | } | ||||||
							
								
								
									
										34
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								package.json
									
									
									
									
									
								
							| @ -3,11 +3,11 @@ | |||||||
|   "description": "Build and push Docker images", |   "description": "Build and push Docker images", | ||||||
|   "main": "lib/main.js", |   "main": "lib/main.js", | ||||||
|   "scripts": { |   "scripts": { | ||||||
|     "build": "tsc && ncc build", |     "build": "ncc build src/main.ts --source-map --minify --license licenses.txt", | ||||||
|     "format": "prettier --write **/*.ts", |     "lint": "eslint src/**/*.ts __tests__/**/*.ts", | ||||||
|     "format-check": "prettier --check **/*.ts", |     "format": "eslint --fix src/**/*.ts __tests__/**/*.ts", | ||||||
|     "test": "jest --coverage", |     "test": "jest --coverage", | ||||||
|     "pre-checkin": "yarn run format && yarn run build" |     "all": "yarn run build && yarn run format && yarn test" | ||||||
|   }, |   }, | ||||||
|   "repository": { |   "repository": { | ||||||
|     "type": "git", |     "type": "git", | ||||||
| @ -38,17 +38,21 @@ | |||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@types/csv-parse": "^1.2.2", |     "@types/csv-parse": "^1.2.2", | ||||||
|     "@types/jest": "^26.0.23", |     "@types/node": "^16.11.26", | ||||||
|     "@types/node": "^14.17.4", |     "@types/semver": "^7.3.9", | ||||||
|     "@types/tmp": "^0.2.0", |     "@types/tmp": "^0.2.3", | ||||||
|     "@vercel/ncc": "^0.28.6", |     "@typescript-eslint/eslint-plugin": "^5.14.0", | ||||||
|     "dotenv": "^8.6.0", |     "@typescript-eslint/parser": "^5.14.0", | ||||||
|     "jest": "^26.6.3", |     "@vercel/ncc": "^0.33.3", | ||||||
|     "jest-circus": "^26.6.3", |     "dotenv": "^16.0.0", | ||||||
|     "jest-runtime": "^26.6.3", |     "eslint": "^8.11.0", | ||||||
|  |     "eslint-config-prettier": "^8.5.0", | ||||||
|  |     "eslint-plugin-jest": "^26.1.1", | ||||||
|  |     "eslint-plugin-prettier": "^4.0.0", | ||||||
|  |     "jest": "^27.2.5", | ||||||
|     "prettier": "^2.3.1", |     "prettier": "^2.3.1", | ||||||
|     "ts-jest": "^26.5.6", |     "ts-jest": "^27.1.2", | ||||||
|     "typescript": "^4.3.4", |     "ts-node": "^10.7.0", | ||||||
|     "typescript-formatter": "^7.2.2" |     "typescript": "^4.4.4" | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -76,8 +76,8 @@ export async function getSecret(kvp: string, file: boolean): Promise<string> { | |||||||
|   return `id=${key},src=${secretFile}`; |   return `id=${key},src=${secretFile}`; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export function isLocalOrTarExporter(outputs: string[]): Boolean { | export function isLocalOrTarExporter(outputs: string[]): boolean { | ||||||
|   for (let output of csvparse(outputs.join(`\n`), { |   for (const output of csvparse(outputs.join(`\n`), { | ||||||
|     delimiter: ',', |     delimiter: ',', | ||||||
|     trim: true, |     trim: true, | ||||||
|     columns: false, |     columns: false, | ||||||
| @ -88,7 +88,7 @@ export function isLocalOrTarExporter(outputs: string[]): Boolean { | |||||||
|     if (output.length == 1 && !output[0].startsWith('type=')) { |     if (output.length == 1 && !output[0].startsWith('type=')) { | ||||||
|       return true; |       return true; | ||||||
|     } |     } | ||||||
|     for (let [key, value] of output.map(chunk => chunk.split('=').map(item => item.trim()))) { |     for (const [key, value] of output.map(chunk => chunk.split('=').map(item => item.trim()))) { | ||||||
|       if (key == 'type' && (value == 'local' || value == 'tar')) { |       if (key == 'type' && (value == 'local' || value == 'tar')) { | ||||||
|         return true; |         return true; | ||||||
|       } |       } | ||||||
| @ -97,8 +97,8 @@ export function isLocalOrTarExporter(outputs: string[]): Boolean { | |||||||
|   return false; |   return false; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export function hasGitAuthToken(secrets: string[]): Boolean { | export function hasGitAuthToken(secrets: string[]): boolean { | ||||||
|   for (let secret of secrets) { |   for (const secret of secrets) { | ||||||
|     if (secret.startsWith('GIT_AUTH_TOKEN=')) { |     if (secret.startsWith('GIT_AUTH_TOKEN=')) { | ||||||
|       return true; |       return true; | ||||||
|     } |     } | ||||||
| @ -106,7 +106,7 @@ export function hasGitAuthToken(secrets: string[]): Boolean { | |||||||
|   return false; |   return false; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export async function isAvailable(): Promise<Boolean> { | export async function isAvailable(): Promise<boolean> { | ||||||
|   return await exec |   return await exec | ||||||
|     .getExecOutput('docker', ['buildx'], { |     .getExecOutput('docker', ['buildx'], { | ||||||
|       ignoreReturnCode: true, |       ignoreReturnCode: true, | ||||||
|  | |||||||
| @ -99,15 +99,17 @@ export async function getInputs(defaultContext: string): Promise<Inputs> { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export async function getArgs(inputs: Inputs, defaultContext: string, buildxVersion: string): Promise<Array<string>> { | export async function getArgs(inputs: Inputs, defaultContext: string, buildxVersion: string): Promise<Array<string>> { | ||||||
|   let args: Array<string> = ['buildx']; |   // prettier-ignore
 | ||||||
|   args.push.apply(args, await getBuildArgs(inputs, defaultContext, buildxVersion)); |   return [ | ||||||
|   args.push.apply(args, await getCommonArgs(inputs, buildxVersion)); |     'buildx', | ||||||
|   args.push(handlebars.compile(inputs.context)({defaultContext})); |     ...await getBuildArgs(inputs, defaultContext, buildxVersion), | ||||||
|   return args; |     ...await getCommonArgs(inputs, buildxVersion), | ||||||
|  |     handlebars.compile(inputs.context)({defaultContext}) | ||||||
|  |   ]; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| async function getBuildArgs(inputs: Inputs, defaultContext: string, buildxVersion: string): Promise<Array<string>> { | async function getBuildArgs(inputs: Inputs, defaultContext: string, buildxVersion: string): Promise<Array<string>> { | ||||||
|   let args: Array<string> = ['build']; |   const args: Array<string> = ['build']; | ||||||
|   await asyncForEach(inputs.addHosts, async addHost => { |   await asyncForEach(inputs.addHosts, async addHost => { | ||||||
|     args.push('--add-host', addHost); |     args.push('--add-host', addHost); | ||||||
|   }); |   }); | ||||||
| @ -182,7 +184,7 @@ async function getBuildArgs(inputs: Inputs, defaultContext: string, buildxVersio | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| async function getCommonArgs(inputs: Inputs, buildxVersion: string): Promise<Array<string>> { | async function getCommonArgs(inputs: Inputs, buildxVersion: string): Promise<Array<string>> { | ||||||
|   let args: Array<string> = []; |   const args: Array<string> = []; | ||||||
|   if (inputs.builder) { |   if (inputs.builder) { | ||||||
|     args.push('--builder', inputs.builder); |     args.push('--builder', inputs.builder); | ||||||
|   } |   } | ||||||
| @ -208,14 +210,14 @@ async function getCommonArgs(inputs: Inputs, buildxVersion: string): Promise<Arr | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export async function getInputList(name: string, ignoreComma?: boolean): Promise<string[]> { | export async function getInputList(name: string, ignoreComma?: boolean): Promise<string[]> { | ||||||
|   let res: Array<string> = []; |   const res: Array<string> = []; | ||||||
| 
 | 
 | ||||||
|   const items = core.getInput(name); |   const items = core.getInput(name); | ||||||
|   if (items == '') { |   if (items == '') { | ||||||
|     return res; |     return res; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   for (let output of (await csvparse(items, { |   for (const output of (await csvparse(items, { | ||||||
|     columns: false, |     columns: false, | ||||||
|     relax: true, |     relax: true, | ||||||
|     relaxColumnCount: true, |     relaxColumnCount: true, | ||||||
| @ -241,6 +243,6 @@ export const asyncForEach = async (array, callback) => { | |||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| // FIXME: Temp fix https://github.com/actions/toolkit/issues/777
 | // FIXME: Temp fix https://github.com/actions/toolkit/issues/777
 | ||||||
| export function setOutput(name: string, value: any): void { | export function setOutput(name: string, value: unknown): void { | ||||||
|   issueCommand('set-output', {name}, value); |   issueCommand('set-output', {name}, value); | ||||||
| } | } | ||||||
|  | |||||||
| @ -20,7 +20,7 @@ async function run(): Promise<void> { | |||||||
| 
 | 
 | ||||||
|     const buildxVersion = await buildx.getVersion(); |     const buildxVersion = await buildx.getVersion(); | ||||||
|     const defContext = context.defaultContext(); |     const defContext = context.defaultContext(); | ||||||
|     let inputs: context.Inputs = await context.getInputs(defContext); |     const inputs: context.Inputs = await context.getInputs(defContext); | ||||||
| 
 | 
 | ||||||
|     const args: string[] = await context.getArgs(inputs, defContext, buildxVersion); |     const args: string[] = await context.getArgs(inputs, defContext, buildxVersion); | ||||||
|     await exec |     await exec | ||||||
| @ -29,7 +29,7 @@ async function run(): Promise<void> { | |||||||
|       }) |       }) | ||||||
|       .then(res => { |       .then(res => { | ||||||
|         if (res.stderr.length > 0 && res.exitCode != 0) { |         if (res.stderr.length > 0 && res.exitCode != 0) { | ||||||
|           throw new Error(`buildx failed with: ${res.stderr.match(/(.*)\s*$/)![0].trim()}`); |           throw new Error(`buildx failed with: ${res.stderr.match(/(.*)\s*$/)?.[0]?.trim() ?? 'unknown error'}`); | ||||||
|         } |         } | ||||||
|       }); |       }); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -2,20 +2,18 @@ | |||||||
|   "compilerOptions": { |   "compilerOptions": { | ||||||
|     "target": "es6", |     "target": "es6", | ||||||
|     "module": "commonjs", |     "module": "commonjs", | ||||||
|     "lib": [ |  | ||||||
|       "es6", |  | ||||||
|       "dom" |  | ||||||
|     ], |  | ||||||
|     "newLine": "lf", |     "newLine": "lf", | ||||||
|     "outDir": "./lib", |     "outDir": "./lib", | ||||||
|     "rootDir": "./src", |     "rootDir": "./src", | ||||||
|  |     "esModuleInterop": true, | ||||||
|  |     "forceConsistentCasingInFileNames": true, | ||||||
|     "strict": true, |     "strict": true, | ||||||
|     "noImplicitAny": false, |     "noImplicitAny": false, | ||||||
|     "esModuleInterop": true, |     "useUnknownInCatchVariables": false, | ||||||
|     "sourceMap": true |  | ||||||
|   }, |   }, | ||||||
|   "exclude": [ |   "exclude": [ | ||||||
|     "node_modules", |     "node_modules", | ||||||
|     "**/*.test.ts" |     "**/*.test.ts", | ||||||
|  |     "jest.config.ts" | ||||||
|   ] |   ] | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user