mirror of
				https://github.com/actions/cache.git
				synced 2025-11-01 04:28:39 +08:00 
			
		
		
		
	Use path.sep in path replace
This commit is contained in:
		
							parent
							
								
									7c7d003bbb
								
							
						
					
					
						commit
						9fe7ad8b07
					
				|  | @ -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, | ||||
|         "." | ||||
|     ]); | ||||
| }); | ||||
|  |  | |||
							
								
								
									
										54
									
								
								dist/restore/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										54
									
								
								dist/restore/index.js
									
									
									
									
										vendored
									
									
								
							|  | @ -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; | ||||
|  |  | |||
							
								
								
									
										73
									
								
								dist/save/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										73
									
								
								dist/save/index.js
									
									
									
									
										vendored
									
									
								
							|  | @ -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; | ||||
|  |  | |||
							
								
								
									
										10
									
								
								src/tar.ts
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								src/tar.ts
									
									
									
									
									
								
							|  | @ -28,7 +28,7 @@ async function getTarPath(args: string[]): Promise<string> { | |||
|         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); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Aiqiao Yan
						Aiqiao Yan