Fix csv-parse implementation since major update
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									300b1bdff7
								
							
						
					
					
						commit
						5ea21bf2ba
					
				| @ -1,10 +1,13 @@ | |||||||
| module.exports = { | module.exports = { | ||||||
|   clearMocks: false, |   clearMocks: false, | ||||||
|   moduleFileExtensions: ['js', 'ts'], |   moduleFileExtensions: ['js', 'ts'], | ||||||
|   setupFiles: ["dotenv/config"], |   setupFiles: ['dotenv/config'], | ||||||
|   testMatch: ['**/*.test.ts'], |   testMatch: ['**/*.test.ts'], | ||||||
|   transform: { |   transform: { | ||||||
|     '^.+\\.ts$': 'ts-jest' |     '^.+\\.ts$': 'ts-jest' | ||||||
|   }, |   }, | ||||||
|  |   moduleNameMapper: { | ||||||
|  |     '^csv-parse/sync': '<rootDir>/node_modules/csv-parse/dist/cjs/sync.cjs' | ||||||
|  |   }, | ||||||
|   verbose: true |   verbose: true | ||||||
| } | }; | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| import csvparse from 'csv-parse/lib/sync'; | import {parse} from 'csv-parse/sync'; | ||||||
| import fs from 'fs'; | import fs from 'fs'; | ||||||
| import path from 'path'; | import path from 'path'; | ||||||
| import * as semver from 'semver'; | import * as semver from 'semver'; | ||||||
| @ -77,18 +77,19 @@ export async function getSecret(kvp: string, file: boolean): Promise<string> { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export function isLocalOrTarExporter(outputs: string[]): boolean { | export function isLocalOrTarExporter(outputs: string[]): boolean { | ||||||
|   for (const output of csvparse(outputs.join(`\n`), { |   const records = parse(outputs.join(`\n`), { | ||||||
|     delimiter: ',', |     delimiter: ',', | ||||||
|     trim: true, |     trim: true, | ||||||
|     columns: false, |     columns: false, | ||||||
|     relaxColumnCount: true |     relaxColumnCount: true | ||||||
|   })) { |   }); | ||||||
|  |   for (const record of records) { | ||||||
|     // Local if no type is defined
 |     // Local if no type is defined
 | ||||||
|     // https://github.com/docker/buildx/blob/d2bf42f8b4784d83fde17acb3ed84703ddc2156b/build/output.go#L29-L43
 |     // https://github.com/docker/buildx/blob/d2bf42f8b4784d83fde17acb3ed84703ddc2156b/build/output.go#L29-L43
 | ||||||
|     if (output.length == 1 && !output[0].startsWith('type=')) { |     if (record.length == 1 && !record[0].startsWith('type=')) { | ||||||
|       return true; |       return true; | ||||||
|     } |     } | ||||||
|     for (const [key, value] of output.map(chunk => chunk.split('=').map(item => item.trim()))) { |     for (const [key, value] of record.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; | ||||||
|       } |       } | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| import csvparse from 'csv-parse/lib/sync'; | import {parse} from 'csv-parse/sync'; | ||||||
| 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'; | ||||||
| @ -217,20 +217,22 @@ export async function getInputList(name: string, ignoreComma?: boolean): Promise | |||||||
|     return res; |     return res; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   for (const output of (await csvparse(items, { |   const records = await parse(items, { | ||||||
|     columns: false, |     columns: false, | ||||||
|     relax: true, |     relaxQuotes: true, | ||||||
|     relaxColumnCount: true, |     relaxColumnCount: true, | ||||||
|     skipLinesWithEmptyValues: true |     skipEmptyLines: true | ||||||
|   })) as Array<string[]>) { |   }); | ||||||
|     if (output.length == 1) { | 
 | ||||||
|       res.push(output[0]); |   for (const record of records as Array<string[]>) { | ||||||
|  |     if (record.length == 1) { | ||||||
|  |       res.push(record[0]); | ||||||
|       continue; |       continue; | ||||||
|     } else if (!ignoreComma) { |     } else if (!ignoreComma) { | ||||||
|       res.push(...output); |       res.push(...record); | ||||||
|       continue; |       continue; | ||||||
|     } |     } | ||||||
|     res.push(output.join(',')); |     res.push(record.join(',')); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   return res.filter(item => item).map(pat => pat.trim()); |   return res.filter(item => item).map(pat => pat.trim()); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user