Add more error handling to zstd extraction
This commit is contained in:
parent
d57328a17b
commit
d5bcf48469
6 changed files with 49 additions and 37 deletions
35
lib/tar.js
generated
35
lib/tar.js
generated
|
|
@ -135,22 +135,27 @@ async function extractTarZst(tar, dest, tarVersion, logger) {
|
|||
}
|
||||
args.push("-f", tar instanceof stream.Readable ? "-" : tar, "-C", dest);
|
||||
process.stdout.write(`[command]tar ${args.join(" ")}\n`);
|
||||
const tarProcess = (0, child_process_1.spawn)("tar", args, { stdio: "pipe" });
|
||||
let stdout = "";
|
||||
tarProcess.stdout?.on("data", (data) => {
|
||||
stdout += data.toString();
|
||||
process.stdout.write(data);
|
||||
});
|
||||
let stderr = "";
|
||||
tarProcess.stderr?.on("data", (data) => {
|
||||
stderr += data.toString();
|
||||
// Mimic the standard behavior of the toolrunner by writing stderr to stdout
|
||||
process.stdout.write(data);
|
||||
});
|
||||
if (tar instanceof stream.Readable) {
|
||||
tar.pipe(tarProcess.stdin);
|
||||
}
|
||||
await new Promise((resolve, reject) => {
|
||||
const tarProcess = (0, child_process_1.spawn)("tar", args, { stdio: "pipe" });
|
||||
let stdout = "";
|
||||
tarProcess.stdout?.on("data", (data) => {
|
||||
stdout += data.toString();
|
||||
process.stdout.write(data);
|
||||
});
|
||||
let stderr = "";
|
||||
tarProcess.stderr?.on("data", (data) => {
|
||||
stderr += data.toString();
|
||||
// Mimic the standard behavior of the toolrunner by writing stderr to stdout
|
||||
process.stdout.write(data);
|
||||
});
|
||||
tarProcess.on("error", (err) => {
|
||||
reject(new Error(`Error while extracting tar: ${err}`));
|
||||
});
|
||||
if (tar instanceof stream.Readable) {
|
||||
tar.pipe(tarProcess.stdin).on("error", (err) => {
|
||||
reject(new Error(`Error while piping tar stream: ${err}`));
|
||||
});
|
||||
}
|
||||
tarProcess.on("exit", (code) => {
|
||||
if (code !== 0) {
|
||||
reject(new actions_util_1.CommandInvocationError("tar", args, code ?? undefined, stdout, stderr));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue