diff --git a/README.md b/README.md index c7287768..731b78cc 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Settting up a **cross-platform** enviroment for building and testing C++/C proje This package is designed to be fully **modular** and as **minimal** as possible. This will allow you to only install the tools you want. -The package will be usable locally or inside GitHub Actions. Stay tuned for the stable release. +The package will be usable from any environment (locally, GitHub Actions, etc). Stay tuned for the stable release. # Features (WIP) diff --git a/src/cmake/__tests__/cmake.test.ts b/src/cmake/__tests__/cmake.test.ts index 3f0b45c3..ed34e78e 100644 --- a/src/cmake/__tests__/cmake.test.ts +++ b/src/cmake/__tests__/cmake.test.ts @@ -5,8 +5,9 @@ import { setupTmpDir, cleanupTmpDir } from "../../utils/tests/test-helpers" jest.setTimeout(100000) describe("setup-cmake", () => { + let directory: string beforeEach(async () => { - await setupTmpDir("setup-cmake") + directory = await setupTmpDir("setup-cmake") }) afterAll(async () => { @@ -14,7 +15,7 @@ describe("setup-cmake", () => { }, 100000) it("should setup CMake", async () => { - const cmakePath = await setupCmake("3.20.2") + const cmakePath = await setupCmake("3.20.2", directory) expect(cmakePath).toBeDefined() expect(cmakePath).not.toHaveLength(0) diff --git a/src/cmake/cmake.ts b/src/cmake/cmake.ts index a18c3540..743195d3 100644 --- a/src/cmake/cmake.ts +++ b/src/cmake/cmake.ts @@ -59,6 +59,6 @@ function getCmakePackageInfo(version: string, platform?: NodeJS.Platform): Packa } /** Setup cmake */ -export function setupCmake(version: string): Promise { - return setupBin("cmake", version, getCmakePackageInfo) +export function setupCmake(version: string, setupCppDir: string): Promise { + return setupBin("cmake", version, getCmakePackageInfo, setupCppDir) } diff --git a/src/main.ts b/src/main.ts index 151adfb4..32df0533 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,5 +1,6 @@ import * as core from "@actions/core" import { setupCmake } from "./cmake/cmake" +import { setupLLVM } from "./llvm/llvm" import { setupNinja } from "./ninja/ninja" function maybeGetInput(key: string) { @@ -11,17 +12,18 @@ function maybeGetInput(key: string) { } export async function main(): Promise { + const setupCppDir = process.env.SETUP_CPP_DIR ?? "~/setup_cpp" try { // setup cmake const cmakeVersion = maybeGetInput("cmake") if (cmakeVersion !== undefined) { - await setupCmake(cmakeVersion) + await setupCmake(cmakeVersion, setupCppDir) } // setup ninja const ninjaVersion = maybeGetInput("ninja") if (ninjaVersion !== undefined) { - await setupNinja(ninjaVersion) + await setupNinja(ninjaVersion, setupCppDir) } } catch (err) { core.error(err as string | Error) diff --git a/src/ninja/__tests__/ninja.test.ts b/src/ninja/__tests__/ninja.test.ts index 9811777e..af8fa5ad 100644 --- a/src/ninja/__tests__/ninja.test.ts +++ b/src/ninja/__tests__/ninja.test.ts @@ -5,8 +5,9 @@ import { setupTmpDir, cleanupTmpDir } from "../../utils/tests/test-helpers" jest.setTimeout(100000) describe("setup-ninja", () => { + let directory: string beforeEach(async () => { - await setupTmpDir("setup-ninja") + directory = await setupTmpDir("setup-ninja") }) afterAll(async () => { @@ -14,7 +15,7 @@ describe("setup-ninja", () => { }, 100000) it("should setup Ninja", async () => { - const ninjaPath = await setupNinja("1.10.2") + const ninjaPath = await setupNinja("1.10.2", directory) expect(ninjaPath).toBeDefined() expect(ninjaPath).not.toHaveLength(0) diff --git a/src/ninja/ninja.ts b/src/ninja/ninja.ts index 20fbe635..49f67794 100644 --- a/src/ninja/ninja.ts +++ b/src/ninja/ninja.ts @@ -26,6 +26,6 @@ function getNinjaPackageInfo(version: string, platform: NodeJS.Platform): Packag } } -export function setupNinja(version: string): Promise { - return setupBin("ninja", version, getNinjaPackageInfo) +export function setupNinja(version: string, setupCppDir: string): Promise { + return setupBin("ninja", version, getNinjaPackageInfo, setupCppDir) } diff --git a/src/utils/setup/setupBin.ts b/src/utils/setup/setupBin.ts index edfd82d3..62632cd3 100644 --- a/src/utils/setup/setupBin.ts +++ b/src/utils/setup/setupBin.ts @@ -23,9 +23,9 @@ export type PackageInfo = { export async function setupBin( name: string, version: string, - getPackageInfo: (version: string, platform: NodeJS.Platform) => PackageInfo + getPackageInfo: (version: string, platform: NodeJS.Platform) => PackageInfo, + setupCppDir: string ): Promise { - const setupCppDir = process.env.SETUP_CPP_DIR ?? "~/setup_cpp" process.env.RUNNER_TEMP = process.env.RUNNER_TEMP ?? tmpdir() process.env.RUNNER_TOOL_CACHE = process.env.RUNNER_TOOL_CACH ?? join(setupCppDir, "ToolCache")