Trim tags and flavor inputs
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									110426b173
								
							
						
					
					
						commit
						b69dce7fed
					
				| @ -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); | ||||
|  | ||||
							
								
								
									
										34
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										34
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -151,39 +151,44 @@ 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 +907,16 @@ 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)) { | ||||
|  | ||||
| @ -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; | ||||
|             } | ||||
|           } | ||||
|  | ||||
							
								
								
									
										11
									
								
								src/tag.ts
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								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)) { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 CrazyMax
						CrazyMax