unity-builder/src/index.ts

76 lines
2.2 KiB
TypeScript
Raw Normal View History

import * as core from '@actions/core';
2021-12-13 22:21:26 +00:00
import { Action, BuildParameters, Cache, Docker, ImageTag, Output, CloudRunner, Input } from './model';
import { Command } from 'commander-ts';
import { RemoteClientCli } from './model/cloud-runner/remote-client';
2021-12-13 22:21:26 +00:00
async function runMain() {
try {
Action.checkCompatibility();
Cache.verify();
const { dockerfile, workspace, actionFolder } = Action;
const buildParameters = await BuildParameters.create();
const baseImage = new ImageTag(buildParameters);
let builtImage;
2021-08-17 22:13:46 +00:00
switch (buildParameters.cloudRunnerCluster) {
case 'aws':
case 'k8s':
2021-12-06 20:56:40 +00:00
await CloudRunner.run(buildParameters, baseImage.toString());
break;
// default and local case
default:
core.info('Building locally');
builtImage = await Docker.build({ path: actionFolder, dockerfile, baseImage });
await Docker.run(builtImage, { workspace, ...buildParameters });
break;
}
// Set output
await Output.setBuildVersion(buildParameters.buildVersion);
} catch (error) {
2021-09-08 22:17:23 +00:00
core.setFailed((error as Error).message);
}
}
2021-12-13 22:21:26 +00:00
async function runCli() {
options.versioning = 'None';
Input.cliOptions = options;
const buildParameter = await BuildParameters.create();
const baseImage = new ImageTag(buildParameter);
await CloudRunner.run(buildParameter, baseImage.toString());
2021-12-13 22:21:26 +00:00
}
2021-12-22 02:25:18 +00:00
Input.githubEnabled = false;
2021-12-13 22:21:26 +00:00
const program = new Command();
program.version('0.0.1');
2021-12-19 22:28:07 +00:00
const properties = Object.getOwnPropertyNames(Input);
2021-12-19 22:36:14 +00:00
core.info(`\r\n`);
2021-12-19 22:28:07 +00:00
core.info(`INPUT:`);
for (const element of properties) {
program.option(`--${element} <${element}>`, 'default description');
if (Input[element] !== undefined && Input[element] !== '') {
core.info(`${element} ${Input[element]}`);
}
2021-12-19 22:28:07 +00:00
}
2021-12-19 22:36:14 +00:00
core.info(`\r\n`);
2021-12-13 22:21:26 +00:00
program.option('-m, --mode <mode>', 'cli or default');
program.parse(process.argv);
2021-12-13 22:21:26 +00:00
const options = program.opts();
2021-07-07 22:34:24 +00:00
// eslint-disable-next-line no-console
console.log(`Entrypoint: ${options.mode}`);
2021-12-13 22:21:26 +00:00
switch (options.mode) {
case 'cli':
runCli();
break;
case 'remote-cli':
2021-12-19 23:46:04 +00:00
RemoteClientCli.RunRemoteClient(options);
2021-12-13 22:21:26 +00:00
break;
default:
Input.githubEnabled = true;
2021-12-13 22:21:26 +00:00
runMain();
break;
}