From dd1c44061d12a1dfd5529a57a319b46011723a20 Mon Sep 17 00:00:00 2001 From: Alfi Maulana Date: Tue, 21 Nov 2023 20:45:38 +0700 Subject: [PATCH] feat: install Ninja if it was not available (#82) * feat: install Ninja if generator is Ninja * feat: only install ninja if it was not installed --- main/index.mjs | 15 +++++++++++++++ package.json | 3 ++- src/main.mts | 15 +++++++++++++++ yarn.lock | 3 ++- 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/main/index.mjs b/main/index.mjs index 631c236..f7e9498 100644 --- a/main/index.mjs +++ b/main/index.mjs @@ -27238,6 +27238,8 @@ var __webpack_exports__ = {}; (() => { /* harmony import */ var _actions_core__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(2340); /* harmony import */ var _actions_exec__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(4926); +/* harmony import */ var _actions_io__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(1793); + async function main() { @@ -27247,6 +27249,19 @@ async function main() { const generator = _actions_core__WEBPACK_IMPORTED_MODULE_0__.getInput("generator"); if (generator) configureArgs.push(...["-G", generator]); + if (generator.match(/ninja/gi) && !(await _actions_io__WEBPACK_IMPORTED_MODULE_2__.which("ninja"))) { + switch (process.platform) { + case "linux": + await _actions_exec__WEBPACK_IMPORTED_MODULE_1__.exec("sudo", ["apt", "install", "-y", "ninja-build"]); + break; + case "darwin": + await _actions_exec__WEBPACK_IMPORTED_MODULE_1__.exec("brew", ["install", "ninja"]); + break; + case "win32": + await _actions_exec__WEBPACK_IMPORTED_MODULE_1__.exec("choco", ["install", "ninja"]); + break; + } + } const cCompiler = _actions_core__WEBPACK_IMPORTED_MODULE_0__.getInput("c-compiler"); if (cCompiler) configureArgs.push("-DCMAKE_C_COMPILER=" + cCompiler); diff --git a/package.json b/package.json index a95dd2b..35c0a40 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ }, "dependencies": { "@actions/core": "^1.10.1", - "@actions/exec": "^1.1.1" + "@actions/exec": "^1.1.1", + "@actions/io": "^1.1.3" }, "devDependencies": { "@jest/globals": "^29.7.0", diff --git a/src/main.mts b/src/main.mts index 7a9b3c5..5254742 100644 --- a/src/main.mts +++ b/src/main.mts @@ -1,5 +1,6 @@ import core from "@actions/core"; import exec from "@actions/exec"; +import io from "@actions/io"; async function main() { const sourceDir = core.getInput("source-dir"); @@ -10,6 +11,20 @@ async function main() { const generator = core.getInput("generator"); if (generator) configureArgs.push(...["-G", generator]); + if (generator.match(/ninja/gi) && !(await io.which("ninja"))) { + switch (process.platform) { + case "linux": + await exec.exec("sudo", ["apt", "install", "-y", "ninja-build"]); + break; + case "darwin": + await exec.exec("brew", ["install", "ninja"]); + break; + case "win32": + await exec.exec("choco", ["install", "ninja"]); + break; + } + } + const cCompiler = core.getInput("c-compiler"); if (cCompiler) configureArgs.push("-DCMAKE_C_COMPILER=" + cCompiler); diff --git a/yarn.lock b/yarn.lock index ecb29a5..7b685c9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -41,7 +41,7 @@ __metadata: languageName: node linkType: hard -"@actions/io@npm:^1.0.1": +"@actions/io@npm:^1.0.1, @actions/io@npm:^1.1.3": version: 1.1.3 resolution: "@actions/io@npm:1.1.3" checksum: 5b8751918e5bf0bebd923ba917fb1c0e294401e7ff0037f32c92a4efa4215550df1f6633c63fd4efb2bdaae8711e69b9e36925857db1f38935ff62a5c92ec29e @@ -1617,6 +1617,7 @@ __metadata: dependencies: "@actions/core": "npm:^1.10.1" "@actions/exec": "npm:^1.1.1" + "@actions/io": "npm:^1.1.3" "@jest/globals": "npm:^29.7.0" "@types/jest": "npm:^29.5.8" "@types/node": "npm:^20.9.0"