Merge pull request #143 from crazy-max/trim-val
	
		
			
	
		
	
	
		
	
		
			Some checks failed
		
		
	
	
		
			
				
	
				ci / multi-images (push) Successful in 6s
				
					
					
				
			
		
			
				
	
				ci / tag-schedule () (push) Successful in 7s
				
					
					
				
			
		
			
				
	
				ci / tag-schedule (cron-{{date 'YYYYMMDD'}}) (push) Successful in 7s
				
					
					
				
			
		
			
				
	
				ci / tag-schedule (schedule) (push) Successful in 7s
				
					
					
				
			
		
			
				
	
				ci / tag-schedule ({{date 'YYYYMMDD-HHmmss'}}) (push) Successful in 7s
				
					
					
				
			
		
			
				
	
				ci / tag-match (\d.\d, 0) (push) Successful in 7s
				
					
					
				
			
		
			
				
	
				ci / tag-match (\d.\d.\d, 0) (push) Successful in 7s
				
					
					
				
			
		
			
				
	
				ci / tag-match (v(.*), 1) (push) Successful in 7s
				
					
					
				
			
		
			
				
	
				ci / tag-semver (auto) (push) Successful in 7s
				
					
					
				
			
		
			
				
	
				ci / tag-semver (false) (push) Successful in 7s
				
					
					
				
			
		
			
				
	
				ci / tag-semver (true) (push) Successful in 7s
				
					
					
				
			
		
			
				
	
				ci / flavor (push) Successful in 7s
				
					
					
				
			
		
			
				
	
				ci / labels (push) Successful in 6s
				
					
					
				
			
		
			
				
	
				ci / json (push) Successful in 7s
				
					
					
				
			
		
			
				
	
				ci / docker-push (push) Failing after 17s
				
					
					
				
			
		
			
				
	
				ci / bake (push) Failing after 10s
				
					
					
				
			
		
		
	
	
				
					
				
			
		
			Some checks failed
		
		
	
	ci / multi-images (push) Successful in 6s
				ci / tag-schedule () (push) Successful in 7s
				ci / tag-schedule (cron-{{date 'YYYYMMDD'}}) (push) Successful in 7s
				ci / tag-schedule (schedule) (push) Successful in 7s
				ci / tag-schedule ({{date 'YYYYMMDD-HHmmss'}}) (push) Successful in 7s
				ci / tag-match (\d.\d, 0) (push) Successful in 7s
				ci / tag-match (\d.\d.\d, 0) (push) Successful in 7s
				ci / tag-match (v(.*), 1) (push) Successful in 7s
				ci / tag-semver (auto) (push) Successful in 7s
				ci / tag-semver (false) (push) Successful in 7s
				ci / tag-semver (true) (push) Successful in 7s
				ci / flavor (push) Successful in 7s
				ci / labels (push) Successful in 6s
				ci / json (push) Successful in 7s
				ci / docker-push (push) Failing after 17s
				ci / bake (push) Failing after 10s
				Trim tags and flavor inputs
This commit is contained in:
		
						commit
						548e2346a9
					
				| @ -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