mirror of
				https://github.com/threeal/cmake-action.git
				synced 2025-11-03 21:33:42 +00:00 
			
		
		
		
	refactor: add a getInput function
				
					
				
			This commit is contained in:
		
							parent
							
								
									fe729787d8
								
							
						
					
					
						commit
						bf49a53fb3
					
				
							
								
								
									
										19
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -26753,14 +26753,23 @@ var external_node_path_default = /*#__PURE__*/__nccwpck_require__.n(external_nod
 | 
			
		||||
;// CONCATENATED MODULE: ./src/inputs.ts
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves an action input.
 | 
			
		||||
 * @param key - The key of the action input.
 | 
			
		||||
 * @returns The action input value as a string.
 | 
			
		||||
 */
 | 
			
		||||
function getInput(key) {
 | 
			
		||||
    const value = process.env[`INPUT_${key.toUpperCase()}`] || "";
 | 
			
		||||
    return value.trim();
 | 
			
		||||
}
 | 
			
		||||
function getInputs() {
 | 
			
		||||
    const sourceDir = (0,core.getInput)("source-dir");
 | 
			
		||||
    const sourceDir = getInput("source-dir");
 | 
			
		||||
    return {
 | 
			
		||||
        sourceDir,
 | 
			
		||||
        buildDir: (0,core.getInput)("build-dir") || external_node_path_default().join(sourceDir, "build"),
 | 
			
		||||
        generator: (0,core.getInput)("generator"),
 | 
			
		||||
        cCompiler: (0,core.getInput)("c-compiler"),
 | 
			
		||||
        cxxCompiler: (0,core.getInput)("cxx-compiler"),
 | 
			
		||||
        buildDir: getInput("build-dir") || external_node_path_default().join(sourceDir, "build"),
 | 
			
		||||
        generator: getInput("generator"),
 | 
			
		||||
        cCompiler: getInput("c-compiler"),
 | 
			
		||||
        cxxCompiler: getInput("cxx-compiler"),
 | 
			
		||||
        cFlags: (0,core.getMultilineInput)("c-flags").join(" "),
 | 
			
		||||
        cxxFlags: (0,core.getMultilineInput)("cxx-flags").join(" "),
 | 
			
		||||
        options: (0,core.getMultilineInput)("options").flatMap((opts) => opts.split(" ")),
 | 
			
		||||
 | 
			
		||||
@ -4,15 +4,14 @@ import type { Inputs } from "./inputs.js";
 | 
			
		||||
 | 
			
		||||
jest.unstable_mockModule("@actions/core", () => ({
 | 
			
		||||
  getBooleanInput: jest.fn(),
 | 
			
		||||
  getInput: jest.fn(),
 | 
			
		||||
  getMultilineInput: jest.fn(),
 | 
			
		||||
}));
 | 
			
		||||
 | 
			
		||||
describe("get action inputs", () => {
 | 
			
		||||
  interface TestCase {
 | 
			
		||||
    name: string;
 | 
			
		||||
    env?: Record<string, string>;
 | 
			
		||||
    booleanInputs?: Record<string, boolean>;
 | 
			
		||||
    stringInputs?: Record<string, string>;
 | 
			
		||||
    multilineInputs?: Record<string, string[]>;
 | 
			
		||||
    expectedInputs?: Partial<Inputs>;
 | 
			
		||||
  }
 | 
			
		||||
@ -23,7 +22,7 @@ describe("get action inputs", () => {
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      name: "with source directory specified",
 | 
			
		||||
      stringInputs: { "source-dir": "project" },
 | 
			
		||||
      env: { "INPUT_SOURCE-DIR": "project" },
 | 
			
		||||
      expectedInputs: {
 | 
			
		||||
        sourceDir: "project",
 | 
			
		||||
        buildDir: path.join("project", "build"),
 | 
			
		||||
@ -31,14 +30,14 @@ describe("get action inputs", () => {
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      name: "with build directory specified",
 | 
			
		||||
      stringInputs: { "build-dir": "output" },
 | 
			
		||||
      env: { "INPUT_BUILD-DIR": "output" },
 | 
			
		||||
      expectedInputs: { buildDir: "output" },
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      name: "with source and build directories specified",
 | 
			
		||||
      stringInputs: {
 | 
			
		||||
        "source-dir": "project",
 | 
			
		||||
        "build-dir": "output",
 | 
			
		||||
      env: {
 | 
			
		||||
        "INPUT_SOURCE-DIR": "project",
 | 
			
		||||
        "INPUT_BUILD-DIR": "output",
 | 
			
		||||
      },
 | 
			
		||||
      expectedInputs: {
 | 
			
		||||
        sourceDir: "project",
 | 
			
		||||
@ -47,17 +46,17 @@ describe("get action inputs", () => {
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      name: "with generator specified",
 | 
			
		||||
      stringInputs: { generator: "Ninja" },
 | 
			
		||||
      env: { INPUT_GENERATOR: "Ninja" },
 | 
			
		||||
      expectedInputs: { generator: "Ninja" },
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      name: "with C compiler specified",
 | 
			
		||||
      stringInputs: { "c-compiler": "clang" },
 | 
			
		||||
      env: { "INPUT_C-COMPILER": "clang" },
 | 
			
		||||
      expectedInputs: { cCompiler: "clang" },
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      name: "with C++ compiler specified",
 | 
			
		||||
      stringInputs: { "cxx-compiler": "clang++" },
 | 
			
		||||
      env: { "INPUT_CXX-COMPILER": "clang++" },
 | 
			
		||||
      expectedInputs: { cxxCompiler: "clang++" },
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
@ -99,12 +98,12 @@ describe("get action inputs", () => {
 | 
			
		||||
      booleanInputs: {
 | 
			
		||||
        "run-build": false,
 | 
			
		||||
      },
 | 
			
		||||
      stringInputs: {
 | 
			
		||||
        "source-dir": "project",
 | 
			
		||||
        "build-dir": "output",
 | 
			
		||||
        generator: "Ninja",
 | 
			
		||||
        "c-compiler": "clang",
 | 
			
		||||
        "cxx-compiler": "clang++",
 | 
			
		||||
      env: {
 | 
			
		||||
        "INPUT_SOURCE-DIR": "project",
 | 
			
		||||
        "INPUT_BUILD-DIR": "output",
 | 
			
		||||
        INPUT_GENERATOR: "Ninja",
 | 
			
		||||
        "INPUT_C-COMPILER": "clang",
 | 
			
		||||
        "INPUT_CXX-COMPILER": "clang++",
 | 
			
		||||
      },
 | 
			
		||||
      multilineInputs: {
 | 
			
		||||
        "c-flags": ["-Werror -Wall", "-Wextra"],
 | 
			
		||||
@ -142,10 +141,11 @@ describe("get action inputs", () => {
 | 
			
		||||
        return booleanInputs[name] ?? false;
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      const stringInputs = { ...testCase.stringInputs };
 | 
			
		||||
      jest.mocked(core.getInput).mockImplementation((name) => {
 | 
			
		||||
        return stringInputs[name] ?? "";
 | 
			
		||||
      });
 | 
			
		||||
      const prevEnv = process.env;
 | 
			
		||||
      process.env = {
 | 
			
		||||
        ...process.env,
 | 
			
		||||
        ...testCase.env,
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      const multilineInputs = { ...testCase.multilineInputs };
 | 
			
		||||
      jest.mocked(core.getMultilineInput).mockImplementation((name) => {
 | 
			
		||||
@ -166,6 +166,8 @@ describe("get action inputs", () => {
 | 
			
		||||
        buildArgs: [],
 | 
			
		||||
        ...testCase.expectedInputs,
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      process.env = prevEnv;
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
import { getBooleanInput, getInput, getMultilineInput } from "@actions/core";
 | 
			
		||||
import { getBooleanInput, getMultilineInput } from "@actions/core";
 | 
			
		||||
import path from "node:path";
 | 
			
		||||
 | 
			
		||||
export interface Inputs {
 | 
			
		||||
@ -15,6 +15,16 @@ export interface Inputs {
 | 
			
		||||
  buildArgs: string[];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Retrieves an action input.
 | 
			
		||||
 * @param key - The key of the action input.
 | 
			
		||||
 * @returns The action input value as a string.
 | 
			
		||||
 */
 | 
			
		||||
function getInput(key: string): string {
 | 
			
		||||
  const value = process.env[`INPUT_${key.toUpperCase()}`] || "";
 | 
			
		||||
  return value.trim();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function getInputs(): Inputs {
 | 
			
		||||
  const sourceDir = getInput("source-dir");
 | 
			
		||||
  return {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user