Use csv-parse lib to parse outputs
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									695ef9e5a5
								
							
						
					
					
						commit
						bf051e6237
					
				
							
								
								
									
										3
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							| @ -261,6 +261,7 @@ jobs: | |||||||
|         id: buildx |         id: buildx | ||||||
|         uses: docker/setup-buildx-action@v1 |         uses: docker/setup-buildx-action@v1 | ||||||
|         with: |         with: | ||||||
|  |           # TODO: Remove image=moby/buildkit:buildx-stable-1 when moby/buildkit#1727 fixed | ||||||
|           driver-opts: | |           driver-opts: | | ||||||
|             network=host |             network=host | ||||||
|             image=moby/buildkit:buildx-stable-1 |             image=moby/buildkit:buildx-stable-1 | ||||||
| @ -348,6 +349,7 @@ jobs: | |||||||
|         id: buildx |         id: buildx | ||||||
|         uses: docker/setup-buildx-action@v1 |         uses: docker/setup-buildx-action@v1 | ||||||
|         with: |         with: | ||||||
|  |           # TODO: Remove image=moby/buildkit:buildx-stable-1 when moby/buildkit#1727 fixed | ||||||
|           driver-opts: | |           driver-opts: | | ||||||
|             network=host |             network=host | ||||||
|             image=moby/buildkit:buildx-stable-1 |             image=moby/buildkit:buildx-stable-1 | ||||||
| @ -412,6 +414,7 @@ jobs: | |||||||
|         id: buildx |         id: buildx | ||||||
|         uses: docker/setup-buildx-action@v1 |         uses: docker/setup-buildx-action@v1 | ||||||
|         with: |         with: | ||||||
|  |           # TODO: Remove image=moby/buildkit:buildx-stable-1 when moby/buildkit#1727 fixed | ||||||
|           driver-opts: | |           driver-opts: | | ||||||
|             network=host |             network=host | ||||||
|             image=moby/buildkit:buildx-stable-1 |             image=moby/buildkit:buildx-stable-1 | ||||||
|  | |||||||
| @ -30,6 +30,66 @@ describe('getImageID', () => { | |||||||
|   }); |   }); | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  | describe('isLocalOrTarExporter', () => { | ||||||
|  |   // prettier-ignore
 | ||||||
|  |   test.each([ | ||||||
|  |     [ | ||||||
|  |       [ | ||||||
|  |         'type=registry,ref=user/app', | ||||||
|  |       ], | ||||||
|  |       false | ||||||
|  |     ], | ||||||
|  |     [ | ||||||
|  |       [ | ||||||
|  |         'type=docker', | ||||||
|  |       ], | ||||||
|  |       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 | ||||||
|  |     ], | ||||||
|  |     [ | ||||||
|  |       [ | ||||||
|  |         '.' | ||||||
|  |       ], | ||||||
|  |       false | ||||||
|  |     ], | ||||||
|  |   ])( | ||||||
|  |     'given %p returns %p', | ||||||
|  |     async (outputs: Array<string>, expected: boolean) => { | ||||||
|  |       expect(buildx.isLocalOrTarExporter(outputs)).toEqual(expected); | ||||||
|  |     } | ||||||
|  |   ); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
| describe('getVersion', () => { | describe('getVersion', () => { | ||||||
|   it('valid', async () => { |   it('valid', async () => { | ||||||
|     await exec.exec('docker', ['buildx', 'version']); |     await exec.exec('docker', ['buildx', 'version']); | ||||||
|  | |||||||
| @ -39,10 +39,8 @@ describe('getArgs', () => { | |||||||
|       [ |       [ | ||||||
|         'buildx', |         'buildx', | ||||||
|         'build', |         'build', | ||||||
|         '--iidfile', |         '--iidfile', '/tmp/.docker-build-push-jest/iidfile', | ||||||
|         '/tmp/.docker-build-push-jest/iidfile', |         '--file', 'Dockerfile', | ||||||
|         '--file', |  | ||||||
|         'Dockerfile', |  | ||||||
|         'https://github.com/docker/build-push-action.git#test-jest' |         'https://github.com/docker/build-push-action.git#test-jest' | ||||||
|       ] |       ] | ||||||
|     ], |     ], | ||||||
| @ -81,10 +79,8 @@ describe('getArgs', () => { | |||||||
|       [ |       [ | ||||||
|         'buildx', |         'buildx', | ||||||
|         'build', |         'build', | ||||||
|         '--iidfile', |         '--iidfile', '/tmp/.docker-build-push-jest/iidfile', | ||||||
|         '/tmp/.docker-build-push-jest/iidfile', |         '--secret', 'id=GIT_AUTH_TOKEN,src=/tmp/.docker-build-push-jest/.tmpname-jest', | ||||||
|         '--secret', |  | ||||||
|         'id=GIT_AUTH_TOKEN,src=/tmp/.docker-build-push-jest/.tmpname-jest', |  | ||||||
|         '--file', 'Dockerfile', |         '--file', 'Dockerfile', | ||||||
|         '.' |         '.' | ||||||
|       ] |       ] | ||||||
| @ -92,15 +88,15 @@ describe('getArgs', () => { | |||||||
|     [ |     [ | ||||||
|       '0.4.2', |       '0.4.2', | ||||||
|       new Map<string, string>([ |       new Map<string, string>([ | ||||||
|         ['github-token', 'abcdefghijklmno0123456789'] |         ['github-token', 'abcdefghijklmno0123456789'], | ||||||
|  |         ['outputs', '.'] | ||||||
|       ]), |       ]), | ||||||
|       [ |       [ | ||||||
|         'buildx', |         'buildx', | ||||||
|         'build', |         'build', | ||||||
|         '--iidfile', |         '--output', '.', | ||||||
|         '/tmp/.docker-build-push-jest/iidfile', |         '--iidfile', '/tmp/.docker-build-push-jest/iidfile', | ||||||
|         '--secret', |         '--secret', 'id=GIT_AUTH_TOKEN,src=/tmp/.docker-build-push-jest/.tmpname-jest', | ||||||
|         'id=GIT_AUTH_TOKEN,src=/tmp/.docker-build-push-jest/.tmpname-jest', |  | ||||||
|         '--file', 'Dockerfile', |         '--file', 'Dockerfile', | ||||||
|         'https://github.com/docker/build-push-action.git#test-jest' |         'https://github.com/docker/build-push-action.git#test-jest' | ||||||
|       ] |       ] | ||||||
|  | |||||||
							
								
								
									
										1258
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1258
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -31,10 +31,12 @@ | |||||||
|     "@actions/core": "^1.2.6", |     "@actions/core": "^1.2.6", | ||||||
|     "@actions/exec": "^1.0.4", |     "@actions/exec": "^1.0.4", | ||||||
|     "@actions/github": "^4.0.0", |     "@actions/github": "^4.0.0", | ||||||
|  |     "csv-parse": "^4.12.0", | ||||||
|     "semver": "^7.3.2", |     "semver": "^7.3.2", | ||||||
|     "tmp": "^0.2.1" |     "tmp": "^0.2.1" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|  |     "@types/csv-parse": "^1.2.2", | ||||||
|     "@types/jest": "^26.0.3", |     "@types/jest": "^26.0.3", | ||||||
|     "@types/node": "^14.0.14", |     "@types/node": "^14.0.14", | ||||||
|     "@types/tmp": "^0.2.0", |     "@types/tmp": "^0.2.0", | ||||||
|  | |||||||
| @ -1,5 +1,6 @@ | |||||||
| import fs from 'fs'; | import fs from 'fs'; | ||||||
| import path from 'path'; | import path from 'path'; | ||||||
|  | import csvparse from 'csv-parse/lib/sync'; | ||||||
| import * as semver from 'semver'; | import * as semver from 'semver'; | ||||||
| import * as context from './context'; | import * as context from './context'; | ||||||
| import * as exec from './exec'; | import * as exec from './exec'; | ||||||
| @ -26,8 +27,13 @@ export async function getSecret(kvp: string): Promise<string> { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export function isLocalOrTarExporter(outputs: string[]): Boolean { | export function isLocalOrTarExporter(outputs: string[]): Boolean { | ||||||
|   for (let output of outputs) { |   for (let output of csvparse(outputs.join(`\n`), { | ||||||
|     for (let [key, value] of output.split(/\s*,\s*/).map(chunk => chunk.split('='))) { |     delimiter: ',', | ||||||
|  |     trim: true, | ||||||
|  |     columns: false, | ||||||
|  |     relax_column_count: true | ||||||
|  |   })) { | ||||||
|  |     for (let [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; | ||||||
|       } |       } | ||||||
|  | |||||||
							
								
								
									
										12
									
								
								yarn.lock
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								yarn.lock
									
									
									
									
									
								
							| @ -636,6 +636,13 @@ | |||||||
|   resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" |   resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" | ||||||
|   integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== |   integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== | ||||||
| 
 | 
 | ||||||
|  | "@types/csv-parse@^1.2.2": | ||||||
|  |   version "1.2.2" | ||||||
|  |   resolved "https://registry.yarnpkg.com/@types/csv-parse/-/csv-parse-1.2.2.tgz#713486235759d615dc8e6a6a979170ada76701d5" | ||||||
|  |   integrity sha512-k33tLtRKTQxf7hQfMlkWoS2TQYsnpk1ibZN+rzbuCkeBs8m23nHTeDTF1wb/e7/MSLdtgCzqu3oM1I101kd6yw== | ||||||
|  |   dependencies: | ||||||
|  |     csv-parse "*" | ||||||
|  | 
 | ||||||
| "@types/graceful-fs@^4.1.2": | "@types/graceful-fs@^4.1.2": | ||||||
|   version "4.1.3" |   version "4.1.3" | ||||||
|   resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" |   resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" | ||||||
| @ -1229,6 +1236,11 @@ cssstyle@^2.2.0: | |||||||
|   dependencies: |   dependencies: | ||||||
|     cssom "~0.3.6" |     cssom "~0.3.6" | ||||||
| 
 | 
 | ||||||
|  | csv-parse@*, csv-parse@^4.12.0: | ||||||
|  |   version "4.12.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-4.12.0.tgz#fd42d6291bbaadd51d3009f6cadbb3e53b4ce026" | ||||||
|  |   integrity sha512-wPQl3H79vWLPI8cgKFcQXl0NBgYYEqVnT1i6/So7OjMpsI540oD7p93r3w6fDSyPvwkTepG05F69/7AViX2lXg== | ||||||
|  | 
 | ||||||
| dashdash@^1.12.0: | dashdash@^1.12.0: | ||||||
|   version "1.14.1" |   version "1.14.1" | ||||||
|   resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" |   resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user