unity-builder/src/model/cloud-runner/services/task-parameter-serializer.ts

131 lines
4.3 KiB
TypeScript

import { Input } from '../..';
import CloudRunnerEnvironmentVariable from './cloud-runner-environment-variable';
import { CloudRunnerCustomHooks } from './cloud-runner-custom-hooks';
import CloudRunnerSecret from './cloud-runner-secret';
import CloudRunnerQueryOverride from './cloud-runner-query-override';
import CloudRunnerOptionsReader from './cloud-runner-options-reader';
import BuildParameters from '../../build-parameters';
import CloudRunnerOptions from '../cloud-runner-options';
// import CloudRunner from '../cloud-runner';
// import ImageEnvironmentFactory from '../../image-environment-factory';
export class TaskParameterSerializer {
public static readBuildEnvironmentVariables(buildParameters: BuildParameters): CloudRunnerEnvironmentVariable[] {
return [
{
name: 'ContainerMemory',
value: buildParameters.cloudRunnerMemory,
},
{
name: 'ContainerCpu',
value: buildParameters.cloudRunnerCpu,
},
{
name: 'BUILD_TARGET',
value: buildParameters.targetPlatform,
},
...TaskParameterSerializer.serializeBuildParamsAndInput(buildParameters),
];
}
private static serializeBuildParamsAndInput(buildParameters: BuildParameters) {
let array = new Array();
array = TaskParameterSerializer.readBuildParameters(array, buildParameters);
array = TaskParameterSerializer.readInput(array);
const configurableHooks = CloudRunnerCustomHooks.getHooks(buildParameters.customJobHooks);
const secrets = configurableHooks.map((x) => x.secrets).filter((x) => x !== undefined && x.length > 0);
if (secrets.length > 0) {
// eslint-disable-next-line unicorn/no-array-reduce
array.push(secrets.reduce((x, y) => [...x, ...y]));
}
const blocked = new Set(['0', 'length', 'prototype', '', 'unityVersion']);
array = array.filter((x) => !blocked.has(x.name));
array = array.map((x) => {
x.name = Input.ToEnvVarFormat(x.name);
x.value = `${x.value}`;
return x;
});
return array;
}
static readBuildParameterFromEnvironment(): BuildParameters {
const buildParameters = new BuildParameters();
const keys = Object.keys(BuildParameters);
for (const element of keys) {
buildParameters[element] = process.env[CloudRunnerOptions.ToEnvVarFormat(`param-${element}`)];
}
return buildParameters;
}
private static readBuildParameters(array: any[], buildParameters: BuildParameters) {
const keys = Object.keys(buildParameters);
for (const element of keys) {
array.push({
name: `param-${element}`,
value: buildParameters[element],
});
}
return array;
}
private static readInput(array: any[]) {
const input = CloudRunnerOptionsReader.GetProperties();
for (const element of input) {
if (typeof Input[element] !== 'function' && array.filter((x) => x.name === element).length === 0) {
array.push({
name: element,
value: `${Input[element]}`,
});
}
}
return array;
}
public static readDefaultSecrets(): CloudRunnerSecret[] {
let array = new Array();
array = TaskParameterSerializer.tryAddInput(array, 'UNITY_SERIAL');
array = TaskParameterSerializer.tryAddInput(array, 'UNITY_EMAIL');
array = TaskParameterSerializer.tryAddInput(array, 'UNITY_PASSWORD');
array = TaskParameterSerializer.tryAddInput(array, 'UNITY_LICENSE');
// array.push(
// ...ImageEnvironmentFactory.getEnvironmentVariables(CloudRunner.buildParameters)
// .filter((x) => array.every((y) => y.ParameterKey !== x.name))
// .map((x) => {
// return {
// ParameterKey: x.name,
// EnvironmentVariable: x.name,
// ParameterValue: x.value,
// };
// }),
// );
return array;
}
private static getValue(key) {
return CloudRunnerQueryOverride.queryOverrides !== undefined &&
CloudRunnerQueryOverride.queryOverrides[key] !== undefined
? CloudRunnerQueryOverride.queryOverrides[key]
: process.env[key];
}
s;
private static tryAddInput(array, key): CloudRunnerSecret[] {
const value = TaskParameterSerializer.getValue(key);
if (value !== undefined && value !== '' && value !== 'null') {
array.push({
ParameterKey: key,
EnvironmentVariable: key,
ParameterValue: value,
});
}
return array;
}
}