mirror of
https://github.com/cloudflare/wrangler-action.git
synced 2024-11-25 11:24:46 +01:00
save primary wrangler command output to a file (optionally)
This commit is contained in:
parent
65996a5230
commit
8d6fade5ad
2 changed files with 52 additions and 2 deletions
|
@ -44,3 +44,10 @@ inputs:
|
||||||
packageManager:
|
packageManager:
|
||||||
description: "The package manager you'd like to use to install and run wrangler. If not specified, the preferred package manager will be inferred based on the presence of a lockfile or fallback to using npm if no lockfile is found. Valid values are `npm` | `pnpm` | `yarn` | `bun`."
|
description: "The package manager you'd like to use to install and run wrangler. If not specified, the preferred package manager will be inferred based on the presence of a lockfile or fallback to using npm if no lockfile is found. Valid values are `npm` | `pnpm` | `yarn` | `bun`."
|
||||||
required: false
|
required: false
|
||||||
|
outputToFile:
|
||||||
|
description: "The path to a file to write the output of the Wrangler command to. If not specified, the output will be written to the console."
|
||||||
|
required: false
|
||||||
|
default: "false"
|
||||||
|
outputs:
|
||||||
|
wranglerCommandOutputFile:
|
||||||
|
description: "The path to a file containing the output of the Wrangler command if `outputToFile` is set to `true`."
|
||||||
|
|
47
src/index.ts
47
src/index.ts
|
@ -7,7 +7,10 @@ import {
|
||||||
info as originalInfo,
|
info as originalInfo,
|
||||||
startGroup as originalStartGroup,
|
startGroup as originalStartGroup,
|
||||||
setFailed,
|
setFailed,
|
||||||
|
setOutput,
|
||||||
} from "@actions/core";
|
} from "@actions/core";
|
||||||
|
import { writeFileSync } from "node:fs";
|
||||||
|
import { join } from "node:path";
|
||||||
import { exec, execShell } from "./exec";
|
import { exec, execShell } from "./exec";
|
||||||
import { checkWorkingDirectory, semverCompare } from "./utils";
|
import { checkWorkingDirectory, semverCompare } from "./utils";
|
||||||
import { getPackageManager } from "./packageManagers";
|
import { getPackageManager } from "./packageManagers";
|
||||||
|
@ -28,6 +31,7 @@ const config = {
|
||||||
COMMANDS: getMultilineInput("command"),
|
COMMANDS: getMultilineInput("command"),
|
||||||
QUIET_MODE: getBooleanInput("quiet"),
|
QUIET_MODE: getBooleanInput("quiet"),
|
||||||
PACKAGE_MANAGER: getInput("packageManager"),
|
PACKAGE_MANAGER: getInput("packageManager"),
|
||||||
|
OUTPUT_TO_FILE: getBooleanInput("outputToFile"),
|
||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
const packageManager = getPackageManager(config.PACKAGE_MANAGER, {
|
const packageManager = getPackageManager(config.PACKAGE_MANAGER, {
|
||||||
|
@ -242,10 +246,49 @@ async function wranglerCommands() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
await exec(`${packageManager.exec} wrangler ${command}`, args, {
|
// Used for saving the wrangler output to a file
|
||||||
|
let stdOut = "";
|
||||||
|
let stdErr = "";
|
||||||
|
|
||||||
|
// Construct the options for the exec command
|
||||||
|
const options = {
|
||||||
cwd: config["workingDirectory"],
|
cwd: config["workingDirectory"],
|
||||||
silent: config["QUIET_MODE"],
|
silent: config["QUIET_MODE"],
|
||||||
});
|
listeners: {
|
||||||
|
stdout: (data: Buffer) => {
|
||||||
|
stdOut += data.toString();
|
||||||
|
},
|
||||||
|
stderr: (data: Buffer) => {
|
||||||
|
stdErr += data.toString();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
// Execute the wrangler command
|
||||||
|
await exec(`${packageManager.exec} wrangler ${command}`, args, options);
|
||||||
|
|
||||||
|
// If the user has specified to output the wrangler command to a file save the stdout and stderr
|
||||||
|
if (config["OUTPUT_TO_FILE"]) {
|
||||||
|
// Create the output data in a machine readable format
|
||||||
|
const outputData = {
|
||||||
|
stdOut: stdOut,
|
||||||
|
stdErr: stdErr,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Consturct the file output path to use the current working directory
|
||||||
|
const outputFilePath = join(
|
||||||
|
config["workingDirectory"],
|
||||||
|
"wrangler-command-output.json",
|
||||||
|
);
|
||||||
|
|
||||||
|
// Write the output to a JSON file
|
||||||
|
writeFileSync(outputFilePath, JSON.stringify(outputData));
|
||||||
|
info(
|
||||||
|
`✅ wrangler-command-output output saved to ${outputFilePath}`,
|
||||||
|
true,
|
||||||
|
);
|
||||||
|
setOutput("wranglerCommandOutputFile", outputFilePath);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
endGroup();
|
endGroup();
|
||||||
|
|
Loading…
Reference in a new issue