| 
									
										
										
										
											2021-12-23 18:10:05 +00:00
										 |  |  | import { Input } from '../..'; | 
					
						
							|  |  |  | import ImageEnvironmentFactory from '../../image-environment-factory'; | 
					
						
							| 
									
										
										
										
											2021-12-29 23:42:06 +00:00
										 |  |  | import CloudRunnerEnvironmentVariable from './cloud-runner-environment-variable'; | 
					
						
							|  |  |  | import { CloudRunnerState } from '../state/cloud-runner-state'; | 
					
						
							| 
									
										
										
										
											2022-01-01 17:44:41 +00:00
										 |  |  | import { CloudRunnerBuildCommandProcessor } from './cloud-runner-build-command-process'; | 
					
						
							| 
									
										
										
										
											2021-12-23 18:10:05 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | export class TaskParameterSerializer { | 
					
						
							|  |  |  |   public static readBuildEnvironmentVariables(): CloudRunnerEnvironmentVariable[] { | 
					
						
							| 
									
										
										
										
											2021-12-30 17:49:16 +00:00
										 |  |  |     TaskParameterSerializer.setupDefaultSecrets(); | 
					
						
							| 
									
										
										
										
											2021-12-30 21:19:01 +00:00
										 |  |  |     return [ | 
					
						
							| 
									
										
										
										
											2021-12-23 18:10:05 +00:00
										 |  |  |       { | 
					
						
							|  |  |  |         name: 'ContainerMemory', | 
					
						
							|  |  |  |         value: CloudRunnerState.buildParams.cloudRunnerMemory, | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         name: 'ContainerCpu', | 
					
						
							|  |  |  |         value: CloudRunnerState.buildParams.cloudRunnerCpu, | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         name: 'BUILD_TARGET', | 
					
						
							|  |  |  |         value: CloudRunnerState.buildParams.platform, | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       ...TaskParameterSerializer.serializeBuildParamsAndInput, | 
					
						
							|  |  |  |     ]; | 
					
						
							| 
									
										
										
										
											2021-12-30 21:19:01 +00:00
										 |  |  |   } | 
					
						
							|  |  |  |   private static get serializeBuildParamsAndInput() { | 
					
						
							|  |  |  |     let array = new Array(); | 
					
						
							|  |  |  |     array = TaskParameterSerializer.readBuildParameters(array); | 
					
						
							|  |  |  |     array = TaskParameterSerializer.readInput(array); | 
					
						
							| 
									
										
										
										
											2022-01-01 18:06:46 +00:00
										 |  |  |     const configurableHooks = CloudRunnerBuildCommandProcessor.getHooks(); | 
					
						
							| 
									
										
										
										
											2022-01-01 22:22:15 +00:00
										 |  |  |     const secrets = configurableHooks.map((x) => x.secrets).filter((x) => x !== undefined && x.length > 0); | 
					
						
							|  |  |  |     // eslint-disable-next-line unicorn/no-array-reduce
 | 
					
						
							|  |  |  |     array.push(secrets.reduce((x, y) => [...x, ...y])); | 
					
						
							| 
									
										
										
										
											2021-12-30 20:41:00 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-31 05:18:48 +00:00
										 |  |  |     array = array.filter( | 
					
						
							|  |  |  |       (x) => x.value !== undefined && x.name !== '0' && x.value !== '' && x.name !== 'prototype' && x.name !== 'length', | 
					
						
							|  |  |  |     ); | 
					
						
							| 
									
										
										
										
											2021-12-30 18:20:05 +00:00
										 |  |  |     array = array.map((x) => { | 
					
						
							| 
									
										
										
										
											2021-12-30 18:57:53 +00:00
										 |  |  |       x.name = Input.ToEnvVarFormat(x.name); | 
					
						
							| 
									
										
										
										
											2021-12-30 21:00:38 +00:00
										 |  |  |       x.value = `${x.value}`; | 
					
						
							| 
									
										
										
										
											2021-12-30 18:20:05 +00:00
										 |  |  |       return x; | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2021-12-29 18:25:09 +00:00
										 |  |  |     return array; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   private static readBuildParameters(array: any[]) { | 
					
						
							| 
									
										
										
										
											2021-12-23 18:10:05 +00:00
										 |  |  |     const keys = Object.keys(CloudRunnerState.buildParams); | 
					
						
							|  |  |  |     for (const element of keys) { | 
					
						
							| 
									
										
										
										
											2021-12-30 21:30:38 +00:00
										 |  |  |       array.push({ | 
					
						
							|  |  |  |         name: element, | 
					
						
							|  |  |  |         value: CloudRunnerState.buildParams[element], | 
					
						
							|  |  |  |       }); | 
					
						
							| 
									
										
										
										
											2021-12-23 18:10:05 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-12-30 22:31:04 +00:00
										 |  |  |     array.push({ name: 'buildParameters', value: JSON.stringify(CloudRunnerState.buildParams) }); | 
					
						
							| 
									
										
										
										
											2021-12-29 18:25:09 +00:00
										 |  |  |     return array; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   private static readInput(array: any[]) { | 
					
						
							| 
									
										
										
										
											2021-12-23 18:10:05 +00:00
										 |  |  |     const input = Object.getOwnPropertyNames(Input); | 
					
						
							|  |  |  |     for (const element of input) { | 
					
						
							| 
									
										
										
										
											2021-12-30 21:30:38 +00:00
										 |  |  |       if (typeof Input[element] !== 'function' && array.filter((x) => x.name === element).length === 0) { | 
					
						
							|  |  |  |         array.push({ | 
					
						
							|  |  |  |           name: element, | 
					
						
							|  |  |  |           value: `${Input[element]}`, | 
					
						
							|  |  |  |         }); | 
					
						
							| 
									
										
										
										
											2021-12-23 18:36:30 +00:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2021-12-23 18:10:05 +00:00
										 |  |  |     } | 
					
						
							|  |  |  |     return array; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-30 17:49:16 +00:00
										 |  |  |   private static setupDefaultSecrets() { | 
					
						
							|  |  |  |     if (CloudRunnerState.defaultSecrets === undefined) | 
					
						
							|  |  |  |       CloudRunnerState.defaultSecrets = ImageEnvironmentFactory.getEnvironmentVariables( | 
					
						
							|  |  |  |         CloudRunnerState.buildParams, | 
					
						
							|  |  |  |       ).map((x) => { | 
					
						
							| 
									
										
										
										
											2021-12-23 18:10:05 +00:00
										 |  |  |         return { | 
					
						
							|  |  |  |           ParameterKey: x.name, | 
					
						
							|  |  |  |           EnvironmentVariable: x.name, | 
					
						
							|  |  |  |           ParameterValue: x.value, | 
					
						
							|  |  |  |         }; | 
					
						
							| 
									
										
										
										
											2021-12-30 17:49:16 +00:00
										 |  |  |       }); | 
					
						
							| 
									
										
										
										
											2021-12-23 18:10:05 +00:00
										 |  |  |   } | 
					
						
							|  |  |  | } |