From 9fe7ad8b07cdf5e7e198f006d6e5156a9012ef87 Mon Sep 17 00:00:00 2001 From: Aiqiao Yan Date: Mon, 13 Apr 2020 12:20:27 -0400 Subject: [PATCH] Use path.sep in path replace --- __tests__/tar.test.ts | 29 +++++++---------- dist/restore/index.js | 54 -------------------------------- dist/save/index.js | 73 ------------------------------------------- src/tar.ts | 10 +++--- 4 files changed, 17 insertions(+), 149 deletions(-) diff --git a/__tests__/tar.test.ts b/__tests__/tar.test.ts index 8e9dd5e..d5d9b62 100644 --- a/__tests__/tar.test.ts +++ b/__tests__/tar.test.ts @@ -1,6 +1,5 @@ import * as exec from "@actions/exec"; import * as io from "@actions/io"; -import * as path from "path"; import * as tar from "../src/tar"; import fs = require("fs"); @@ -34,9 +33,9 @@ test("extract BSD tar", async () => { expect(execMock).toHaveBeenCalledWith(`"${tarPath}"`, [ "-xz", "-f", - archivePath?.replace(/\\/g, "/"), + IS_WINDOWS ? archivePath.replace(/\\/g, "/") : archivePath, "-C", - targetDirectory?.replace(/\\/g, "/"), + IS_WINDOWS ? targetDirectory?.replace(/\\/g, "/") : targetDirectory ]); }); @@ -53,18 +52,14 @@ test("extract GNU tar", async () => { await tar.extractTar(archivePath, targetDirectory); expect(execMock).toHaveBeenCalledTimes(2); - expect(execMock).toHaveBeenLastCalledWith( - `"tar"`, - [ - "-xz", - "-f", - archivePath?.replace(/\\/g, "/"), - "-C", - targetDirectory?.replace(/\\/g, "/"), - "--force-local" - ], - { cwd: undefined } - ); + expect(execMock).toHaveBeenLastCalledWith(`"tar"`, [ + "-xz", + "-f", + archivePath.replace(/\\/g, "/"), + "-C", + targetDirectory?.replace(/\\/g, "/"), + "--force-local" + ]); } }); @@ -83,9 +78,9 @@ test("create BSD tar", async () => { expect(execMock).toHaveBeenCalledWith(`"${tarPath}"`, [ "-cz", "-f", - archivePath?.replace(/\\/g, "/"), + IS_WINDOWS ? archivePath.replace(/\\/g, "/") : archivePath, "-C", - sourceDirectory?.replace(/\\/g, "/"), + IS_WINDOWS ? sourceDirectory?.replace(/\\/g, "/") : sourceDirectory, "." ]); }); diff --git a/dist/restore/index.js b/dist/restore/index.js index eeb2634..732f7fc 100644 --- a/dist/restore/index.js +++ b/dist/restore/index.js @@ -2932,9 +2932,6 @@ const core = __importStar(__webpack_require__(470)); const exec_1 = __webpack_require__(986); const io = __importStar(__webpack_require__(1)); const fs_1 = __webpack_require__(747); -<<<<<<< HEAD -function getTarPath() { -======= const path = __importStar(__webpack_require__(622)); const constants_1 = __webpack_require__(694); function isGnuTar() { @@ -2955,7 +2952,6 @@ function isGnuTar() { } exports.isGnuTar = isGnuTar; function getTarPath(args) { ->>>>>>> 4fa017f... Fallback to GNU tar if BSD tar is unavailable return __awaiter(this, void 0, void 0, function* () { // Explicitly use BSD Tar on Windows const IS_WINDOWS = process.platform === "win32"; @@ -2971,80 +2967,30 @@ function getTarPath(args) { return yield io.which("tar", true); }); } -<<<<<<< HEAD function execTar(args) { var _a, _b; return __awaiter(this, void 0, void 0, function* () { try { yield exec_1.exec(`"${yield getTarPath()}"`, args); -======= -function execTar(args, cwd) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - try { - yield exec_1.exec(`"${yield getTarPath(args)}"`, args, { cwd: cwd }); ->>>>>>> 4fa017f... Fallback to GNU tar if BSD tar is unavailable } catch (error) { throw new Error(`Tar failed with error: ${(_a = error) === null || _a === void 0 ? void 0 : _a.message}`); } }); } -<<<<<<< HEAD function extractTar(archivePath, targetDirectory) { return __awaiter(this, void 0, void 0, function* () { // Create directory to extract tar into yield io.mkdirP(targetDirectory); const args = ["-xz", "-f", archivePath, "-C", targetDirectory]; -======= -function getWorkingDirectory() { - var _a; - return _a = process.env["GITHUB_WORKSPACE"], (_a !== null && _a !== void 0 ? _a : process.cwd()); -} -function extractTar(archivePath) { - var _a, _b; - return __awaiter(this, void 0, void 0, function* () { - // Create directory to extract tar into - const workingDirectory = getWorkingDirectory(); - yield io.mkdirP(workingDirectory); - const args = [ - "-xz", - "-f", - (_a = archivePath) === null || _a === void 0 ? void 0 : _a.replace(/\\/g, "/"), - "-P", - "-C", - (_b = workingDirectory) === null || _b === void 0 ? void 0 : _b.replace(/\\/g, "/") - ]; ->>>>>>> 4fa017f... Fallback to GNU tar if BSD tar is unavailable yield execTar(args); }); } exports.extractTar = extractTar; -<<<<<<< HEAD function createTar(archivePath, sourceDirectory) { return __awaiter(this, void 0, void 0, function* () { const args = ["-cz", "-f", archivePath, "-C", sourceDirectory, "."]; yield execTar(args); -======= -function createTar(archiveFolder, sourceDirectories) { - var _a, _b; - return __awaiter(this, void 0, void 0, function* () { - // Write source directories to manifest.txt to avoid command length limits - const manifestFilename = "manifest.txt"; - fs_1.writeFileSync(path.join(archiveFolder, manifestFilename), sourceDirectories.join("\n")); - const workingDirectory = getWorkingDirectory(); - const args = [ - "-cz", - "-f", - (_a = constants_1.CacheFilename) === null || _a === void 0 ? void 0 : _a.replace(/\\/g, "/"), - "-P", - "-C", - (_b = workingDirectory) === null || _b === void 0 ? void 0 : _b.replace(/\\/g, "/"), - "--files-from", - manifestFilename - ]; - yield execTar(args, archiveFolder); ->>>>>>> 4fa017f... Fallback to GNU tar if BSD tar is unavailable }); } exports.createTar = createTar; diff --git a/dist/save/index.js b/dist/save/index.js index 251e559..b83d036 100644 --- a/dist/save/index.js +++ b/dist/save/index.js @@ -2913,30 +2913,7 @@ const core = __importStar(__webpack_require__(470)); const exec_1 = __webpack_require__(986); const io = __importStar(__webpack_require__(1)); const fs_1 = __webpack_require__(747); -<<<<<<< HEAD function getTarPath() { -======= -const path = __importStar(__webpack_require__(622)); -const constants_1 = __webpack_require__(694); -function isGnuTar() { - return __awaiter(this, void 0, void 0, function* () { - core.debug("Checking tar --version"); - let versionOutput = ""; - yield exec_1.exec("tar --version", [], { - ignoreReturnCode: true, - silent: true, - listeners: { - stdout: (data) => (versionOutput += data.toString()), - stderr: (data) => (versionOutput += data.toString()) - } - }); - core.debug(versionOutput.trim()); - return versionOutput.toUpperCase().includes("GNU TAR"); - }); -} -exports.isGnuTar = isGnuTar; -function getTarPath(args) { ->>>>>>> 4fa017f... Fallback to GNU tar if BSD tar is unavailable return __awaiter(this, void 0, void 0, function* () { // Explicitly use BSD Tar on Windows const IS_WINDOWS = process.platform === "win32"; @@ -2952,80 +2929,30 @@ function getTarPath(args) { return yield io.which("tar", true); }); } -<<<<<<< HEAD function execTar(args) { var _a, _b; return __awaiter(this, void 0, void 0, function* () { try { yield exec_1.exec(`"${yield getTarPath()}"`, args); -======= -function execTar(args, cwd) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - try { - yield exec_1.exec(`"${yield getTarPath(args)}"`, args, { cwd: cwd }); ->>>>>>> 4fa017f... Fallback to GNU tar if BSD tar is unavailable } catch (error) { throw new Error(`Tar failed with error: ${(_a = error) === null || _a === void 0 ? void 0 : _a.message}`); } }); } -<<<<<<< HEAD function extractTar(archivePath, targetDirectory) { return __awaiter(this, void 0, void 0, function* () { // Create directory to extract tar into yield io.mkdirP(targetDirectory); const args = ["-xz", "-f", archivePath, "-C", targetDirectory]; -======= -function getWorkingDirectory() { - var _a; - return _a = process.env["GITHUB_WORKSPACE"], (_a !== null && _a !== void 0 ? _a : process.cwd()); -} -function extractTar(archivePath) { - var _a, _b; - return __awaiter(this, void 0, void 0, function* () { - // Create directory to extract tar into - const workingDirectory = getWorkingDirectory(); - yield io.mkdirP(workingDirectory); - const args = [ - "-xz", - "-f", - (_a = archivePath) === null || _a === void 0 ? void 0 : _a.replace(/\\/g, "/"), - "-P", - "-C", - (_b = workingDirectory) === null || _b === void 0 ? void 0 : _b.replace(/\\/g, "/") - ]; ->>>>>>> 4fa017f... Fallback to GNU tar if BSD tar is unavailable yield execTar(args); }); } exports.extractTar = extractTar; -<<<<<<< HEAD function createTar(archivePath, sourceDirectory) { return __awaiter(this, void 0, void 0, function* () { const args = ["-cz", "-f", archivePath, "-C", sourceDirectory, "."]; yield execTar(args); -======= -function createTar(archiveFolder, sourceDirectories) { - var _a, _b; - return __awaiter(this, void 0, void 0, function* () { - // Write source directories to manifest.txt to avoid command length limits - const manifestFilename = "manifest.txt"; - fs_1.writeFileSync(path.join(archiveFolder, manifestFilename), sourceDirectories.join("\n")); - const workingDirectory = getWorkingDirectory(); - const args = [ - "-cz", - "-f", - (_a = constants_1.CacheFilename) === null || _a === void 0 ? void 0 : _a.replace(/\\/g, "/"), - "-P", - "-C", - (_b = workingDirectory) === null || _b === void 0 ? void 0 : _b.replace(/\\/g, "/"), - "--files-from", - manifestFilename - ]; - yield execTar(args, archiveFolder); ->>>>>>> 4fa017f... Fallback to GNU tar if BSD tar is unavailable }); } exports.createTar = createTar; diff --git a/src/tar.ts b/src/tar.ts index c20c15d..dde9b61 100644 --- a/src/tar.ts +++ b/src/tar.ts @@ -28,7 +28,7 @@ async function getTarPath(args: string[]): Promise { const systemTar = `${process.env["windir"]}\\System32\\tar.exe`; if (existsSync(systemTar)) { return systemTar; - } else if (isGnuTar()) { + } else if (await isGnuTar()) { args.push("--force-local"); } } @@ -52,9 +52,9 @@ export async function extractTar( const args = [ "-xz", "-f", - archivePath?.replace(/\\/g, "/"), + archivePath.replace(new RegExp("\\" + path.sep, "g"), "/"), "-C", - targetDirectory?.replace(/\\/g, "/") + targetDirectory.replace(new RegExp("\\" + path.sep, "g"), "/") ]; await execTar(args); } @@ -66,9 +66,9 @@ export async function createTar( const args = [ "-cz", "-f", - archivePath?.replace(/\\/g, "/"), + archivePath.replace(new RegExp("\\" + path.sep, "g"), "/"), "-C", - sourceDirectory?.replace(/\\/g, "/"), + sourceDirectory.replace(new RegExp("\\" + path.sep, "g"), "/"), "." ]; await execTar(args);