mirror of
https://github.com/game-ci/unity-builder.git
synced 2025-07-07 20:35:33 -04:00

* Refactor to typescript (config part) * Refactor to typescript (convert extensions, minor fixes) * Refactor to typescript (move from `action` to `dist`) * Re-enable integrity-check for dist index.js * Fix all tests and lints * fix parsing major versions * Test patch level to be digits only * debug * debug * uncache * manual compile * debug * debug * Debug * Build lib - doh * remove diff check * Make kubernetes workflow manual * Properly generate 3 digit for simple major tags * Remove ts-ignore * re-enable cache
63 lines
1.5 KiB
TypeScript
63 lines
1.5 KiB
TypeScript
import * as core from '@actions/core';
|
|
import { exec } from '@actions/exec';
|
|
|
|
class System {
|
|
static async run(command, arguments_: any = [], options = {}) {
|
|
let result = '';
|
|
let error = '';
|
|
let debug = '';
|
|
|
|
const listeners = {
|
|
stdout: (dataBuffer) => {
|
|
result += dataBuffer.toString();
|
|
},
|
|
stderr: (dataBuffer) => {
|
|
error += dataBuffer.toString();
|
|
},
|
|
debug: (dataString) => {
|
|
debug += dataString.toString();
|
|
},
|
|
};
|
|
|
|
const showOutput = () => {
|
|
if (debug !== '') {
|
|
core.debug(debug);
|
|
}
|
|
|
|
if (result !== '') {
|
|
core.info(result);
|
|
}
|
|
|
|
if (error !== '') {
|
|
core.warning(error);
|
|
}
|
|
};
|
|
|
|
const throwContextualError = (message) => {
|
|
let commandAsString = command;
|
|
if (Array.isArray(arguments_)) {
|
|
commandAsString += ` ${arguments_.join(' ')}`;
|
|
} else if (typeof arguments_ === 'string') {
|
|
commandAsString += ` ${arguments_}`;
|
|
}
|
|
|
|
throw new Error(`Failed to run "${commandAsString}".\n ${message}`);
|
|
};
|
|
|
|
try {
|
|
const exitCode = await exec(command, arguments_, { silent: true, listeners, ...options });
|
|
showOutput();
|
|
if (exitCode !== 0) {
|
|
throwContextualError(`Command returned non-zero exit code.\nError: ${error}`);
|
|
}
|
|
} catch (inCommandError) {
|
|
showOutput();
|
|
throwContextualError(`In-command error caught: ${inCommandError}`);
|
|
}
|
|
|
|
return result;
|
|
}
|
|
}
|
|
|
|
export default System;
|