From 062f0efe77b9d5d66ed7f5340400e2f183539cc2 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 22 Oct 2021 13:32:46 +0200 Subject: [PATCH] Trim tags and flavor inputs Signed-off-by: CrazyMax --- __tests__/flavor.test.ts | 13 +++++++++++++ dist/index.js | 28 +++++++++++++++------------- src/flavor.ts | 23 ++++++++++++++--------- src/tag.ts | 11 +++++++---- 4 files changed, 49 insertions(+), 26 deletions(-) diff --git a/__tests__/flavor.test.ts b/__tests__/flavor.test.ts index 373ab4b18..5aa19b2e0 100644 --- a/__tests__/flavor.test.ts +++ b/__tests__/flavor.test.ts @@ -152,6 +152,19 @@ describe('transform', () => { } as Flavor, false ], + [ + [ + `prefix= `, + ], + { + latest: "auto", + prefix: "", + prefixLatest: false, + suffix: "", + suffixLatest: false, + } as Flavor, + false + ] ])('given %p attributes ', async (inputs: string[], expected: Flavor, invalid: boolean) => { try { const flavor = Transform(inputs); diff --git a/dist/index.js b/dist/index.js index a59f2f413..630b3a59c 100644 --- a/dist/index.js +++ b/dist/index.js @@ -151,39 +151,41 @@ function Transform(inputs) { })[0]; let onlatestfor = ''; for (const field of fields) { - const parts = field.toString().split('=', 2); + const parts = field.toString().split('=').map(item => item.trim()); if (parts.length == 1) { throw new Error(`Invalid flavor entry: ${input}`); } - switch (parts[0]) { + const key = parts[0].toLowerCase(); + const value = parts[1]; + switch (key) { case 'latest': { - flavor.latest = parts[1]; + flavor.latest = value; if (!['auto', 'true', 'false'].includes(flavor.latest)) { throw new Error(`Invalid latest flavor entry: ${input}`); } break; } case 'prefix': { - flavor.prefix = parts[1]; + flavor.prefix = value; onlatestfor = 'prefix'; break; } case 'suffix': { - flavor.suffix = parts[1]; + flavor.suffix = value; onlatestfor = 'suffix'; break; } case 'onlatest': { - if (!['true', 'false'].includes(parts[1])) { - throw new Error(`Invalid value for onlatest attribute: ${parts[1]}`); + if (!['true', 'false'].includes(value)) { + throw new Error(`Invalid value for onlatest attribute: ${value}`); } switch (onlatestfor) { case 'prefix': { - flavor.prefixLatest = /true/i.test(parts[1]); + flavor.prefixLatest = /true/i.test(value); break; } case 'suffix': { - flavor.suffixLatest = /true/i.test(parts[1]); + flavor.suffixLatest = /true/i.test(value); break; } } @@ -902,13 +904,13 @@ function Parse(s) { })[0]; const tag = new Tag(); for (const field of fields) { - const parts = field.toString().split('=', 2); + const parts = field.toString().split('=').map(item => item.trim()); if (parts.length == 1) { - tag.attrs['value'] = parts[0].trim(); + tag.attrs['value'] = parts[0]; } else { - const key = parts[0].trim().toLowerCase(); - const value = parts[1].trim(); + const key = parts[0].toLowerCase(); + const value = parts[1]; switch (key) { case 'type': { if (!Object.values(Type).includes(value)) { diff --git a/src/flavor.ts b/src/flavor.ts index c5f96cf51..91e4ebeff 100644 --- a/src/flavor.ts +++ b/src/flavor.ts @@ -25,39 +25,44 @@ export function Transform(inputs: string[]): Flavor { })[0]; let onlatestfor = ''; for (const field of fields) { - const parts = field.toString().split('=', 2); + const parts = field + .toString() + .split('=') + .map(item => item.trim()); if (parts.length == 1) { throw new Error(`Invalid flavor entry: ${input}`); } - switch (parts[0]) { + const key = parts[0].toLowerCase(); + const value = parts[1]; + switch (key) { case 'latest': { - flavor.latest = parts[1]; + flavor.latest = value; if (!['auto', 'true', 'false'].includes(flavor.latest)) { throw new Error(`Invalid latest flavor entry: ${input}`); } break; } case 'prefix': { - flavor.prefix = parts[1]; + flavor.prefix = value; onlatestfor = 'prefix'; break; } case 'suffix': { - flavor.suffix = parts[1]; + flavor.suffix = value; onlatestfor = 'suffix'; break; } case 'onlatest': { - if (!['true', 'false'].includes(parts[1])) { - throw new Error(`Invalid value for onlatest attribute: ${parts[1]}`); + if (!['true', 'false'].includes(value)) { + throw new Error(`Invalid value for onlatest attribute: ${value}`); } switch (onlatestfor) { case 'prefix': { - flavor.prefixLatest = /true/i.test(parts[1]); + flavor.prefixLatest = /true/i.test(value); break; } case 'suffix': { - flavor.suffixLatest = /true/i.test(parts[1]); + flavor.suffixLatest = /true/i.test(value); break; } } diff --git a/src/tag.ts b/src/tag.ts index f719f68aa..67e4857cd 100644 --- a/src/tag.ts +++ b/src/tag.ts @@ -93,12 +93,15 @@ export function Parse(s: string): Tag { const tag = new Tag(); for (const field of fields) { - const parts = field.toString().split('=', 2); + const parts = field + .toString() + .split('=') + .map(item => item.trim()); if (parts.length == 1) { - tag.attrs['value'] = parts[0].trim(); + tag.attrs['value'] = parts[0]; } else { - const key = parts[0].trim().toLowerCase(); - const value = parts[1].trim(); + const key = parts[0].toLowerCase(); + const value = parts[1]; switch (key) { case 'type': { if (!Object.values(Type).includes(value)) {