cmake-action/src/index.ts
Alfi Maulana 30c1178974
feat: add function for getting action inputs (#225)
* feat: add `getInputs` function

* feat: specify default input value in `getInputs` function
2024-03-04 22:53:41 +08:00

67 lines
1.6 KiB
TypeScript

import * as core from "@actions/core";
import { exec } from "@actions/exec";
import { which } from "@actions/io";
import { getInputs } from "./inputs.js";
async function main() {
const inputs = getInputs();
const configureArgs = [inputs.sourceDir, "-B", inputs.buildDir];
if (inputs.generator) {
configureArgs.push(...["-G", inputs.generator]);
}
if (inputs.generator.match(/ninja/gi) && !(await which("ninja"))) {
switch (process.platform) {
case "linux":
await exec("sudo", ["apt", "install", "-y", "ninja-build"]);
break;
case "darwin":
await exec("brew", ["install", "ninja"]);
break;
case "win32":
await exec("choco", ["install", "ninja"]);
break;
}
}
if (inputs.cCompiler) {
configureArgs.push("-DCMAKE_C_COMPILER=" + inputs.cCompiler);
}
if (inputs.cxxCompiler) {
configureArgs.push("-DCMAKE_CXX_COMPILER=" + inputs.cxxCompiler);
}
if (inputs.cFlags) {
configureArgs.push("-DCMAKE_C_FLAGS=" + inputs.cFlags);
}
if (inputs.cxxFlags) {
configureArgs.push("-DCMAKE_CXX_FLAGS=" + inputs.cxxFlags);
}
configureArgs.push(...inputs.options.map((opt) => "-D" + opt));
configureArgs.push(...inputs.args);
await exec("cmake", configureArgs);
core.setOutput("build-dir", inputs.buildDir);
if (inputs.runBuild || inputs.runTest) {
await exec("cmake", ["--build", inputs.buildDir, ...inputs.buildArgs]);
}
if (inputs.runTest) {
await exec("ctest", [
"--test-dir",
inputs.buildDir,
"--output-on-failure",
"--no-tests=error",
...inputs.testArgs,
]);
}
}
main().catch((err) => core.setFailed(err));