mirror of
https://github.com/docker/build-push-action
synced 2024-11-10 05:21:40 +00:00
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
3 changed files with 22 additions and 16 deletions
|
@ -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…
Reference in a new issue