unity-builder/src/index.ts

81 lines
2.3 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.projectPath = 'test-project';
2021-12-13 22:21:26 +00:00
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
}
async function runRemoteCli(options) {
await RemoteClientCli.RunRemoteClient(options);
}
const program = new Command();
program.version('0.0.1');
2021-12-19 22:28:07 +00:00
const properties = Object.getOwnPropertyNames(Input);
core.info(`\n`);
core.info(`INPUT:`);
for (const element of properties) {
program.option(`--${element} <${element}>`, 'default description');
2021-12-19 22:35:28 +00:00
if (Input[element] !== undefined && Input[element] !== '') core.info(element);
2021-12-19 22:28:07 +00:00
}
core.info(`\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();
process.env.AWS_REGION = options.region;
2021-07-07 22:34:24 +00:00
// eslint-disable-next-line no-console
console.log(`Entrypoint: ${options.mode}`);
Input.githubEnabled = false;
2021-12-13 22:21:26 +00:00
switch (options.mode) {
case 'cli':
runCli();
break;
case 'remote-cli':
runRemoteCli(options);
break;
default:
Input.githubEnabled = true;
2021-12-13 22:21:26 +00:00
runMain();
break;
}