Use path.resolve to convert archive input to absolute paths

pull/310/head
Frostebite 2022-01-12 20:56:51 +00:00
parent 7596121912
commit 4dd7a41e77
3 changed files with 68 additions and 60 deletions

63
dist/index.js vendored
View File

@ -546,39 +546,42 @@ class Caching {
if (__1.Input.cloudRunnerTests) {
yield cloud_runner_system_1.CloudRunnerSystem.Run(`ls`);
}
console_1.assert(fs_1.default.existsSync(`./../${path_1.default.basename(sourceFolder)}`));
const output = fs_1.default.createWriteStream(`${cacheKey}.zip`);
const archive = archiver_1.default('zip', {
zlib: { level: 9 }, // Sets the compression level.
});
output.on('close', function () {
cloud_runner_logger_1.default.log(`${archive.pointer()} total bytes`);
cloud_runner_logger_1.default.log('archiver has been finalized and the output file descriptor has closed.');
});
output.on('end', function () {
cloud_runner_logger_1.default.log('Data has been drained');
});
archive.on('warning', function (error) {
if (error.code === 'ENOENT') {
// log warning
cloud_runner_logger_1.default.logWarning(error);
}
else {
console_1.assert(fs_1.default.existsSync(`${path_1.default.basename(sourceFolder)}`));
yield new Promise((resolve) => {
const output = fs_1.default.createWriteStream(`${cacheKey}.zip`);
const archive = archiver_1.default('zip', {
zlib: { level: 9 }, // Sets the compression level.
});
output.on('close', function () {
cloud_runner_logger_1.default.log(`${archive.pointer()} total bytes`);
cloud_runner_logger_1.default.log('archiver has been finalized and the output file descriptor has closed.');
resolve();
});
output.on('end', function () {
cloud_runner_logger_1.default.log('Data has been drained');
});
archive.on('warning', function (error) {
if (error.code === 'ENOENT') {
// log warning
cloud_runner_logger_1.default.logWarning(error);
}
else {
throw error;
}
});
archive.on('error', function (error) {
throw error;
}
});
archive.pipe(output);
archive.directory(path_1.default.resolve(`./../${path_1.default.basename(sourceFolder)}`), false);
archive.finalize();
});
archive.on('error', function (error) {
throw error;
});
archive.pipe(output);
archive.directory(`./../${path_1.default.basename(sourceFolder)}/`, false);
archive.finalize();
console_1.assert(fs_1.default.existsSync(`${cacheKey}.zip`));
console_1.assert(fs_1.default.existsSync(`${cacheFolder}`));
console_1.assert(fs_1.default.existsSync(`./../${path_1.default.basename(sourceFolder)}`));
console_1.assert(fs_1.default.existsSync(`${cacheKey}.zip`), 'cache zip exists');
console_1.assert(fs_1.default.existsSync(`${cacheFolder}`), 'cache folder');
console_1.assert(fs_1.default.existsSync(path_1.default.resolve(`./../${path_1.default.basename(sourceFolder)}`)), 'source folder exists');
yield cloud_runner_system_1.CloudRunnerSystem.Run(`mv ${cacheKey}.zip ${cacheFolder}`);
remote_client_logger_1.RemoteClientLogger.log(`moved ${cacheKey}.zip to ${cacheFolder}`);
console_1.assert(fs_1.default.existsSync(`${path_1.default.join(cacheFolder, cacheKey)}.zip`));
console_1.assert(fs_1.default.existsSync(`${path_1.default.join(cacheFolder, cacheKey)}.zip`), 'cache zip exists inside cache folder');
}
catch (error) {
process.chdir(`${startPath}`);
@ -612,7 +615,7 @@ class Caching {
console_1.assert(`${fs_1.default.existsSync(destinationFolder)}`);
yield extract_zip_1.default(cacheSelection, { dir: `${path_1.default.basename(destinationFolder)}/` });
process.chdir(path_1.default.basename(destinationFolder));
yield cloud_runner_system_1.CloudRunnerSystem.Run(`mv "${path_1.default.basename(destinationFolder)}/*" "${destinationFolder}/.."`);
yield cloud_runner_system_1.CloudRunnerSystem.Run(`mv "${path_1.default.basename(destinationFolder)}/*" "${path_1.default.resolve(`${destinationFolder}/..`)}"`);
}
else {
remote_client_logger_1.RemoteClientLogger.logWarning(`cache item ${cacheKey} doesn't exist ${destinationFolder}`);

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -30,38 +30,41 @@ export class Caching {
if (Input.cloudRunnerTests) {
await CloudRunnerSystem.Run(`ls`);
}
assert(fs.existsSync(`./../${path.basename(sourceFolder)}`));
const output = fs.createWriteStream(`${cacheKey}.zip`);
const archive = archiver('zip', {
zlib: { level: 9 }, // Sets the compression level.
});
output.on('close', function () {
CloudRunnerLogger.log(`${archive.pointer()} total bytes`);
CloudRunnerLogger.log('archiver has been finalized and the output file descriptor has closed.');
});
output.on('end', function () {
CloudRunnerLogger.log('Data has been drained');
});
archive.on('warning', function (error) {
if (error.code === 'ENOENT') {
// log warning
CloudRunnerLogger.logWarning(error);
} else {
assert(fs.existsSync(`${path.basename(sourceFolder)}`));
await new Promise<void>((resolve) => {
const output = fs.createWriteStream(`${cacheKey}.zip`);
const archive = archiver('zip', {
zlib: { level: 9 }, // Sets the compression level.
});
output.on('close', function () {
CloudRunnerLogger.log(`${archive.pointer()} total bytes`);
CloudRunnerLogger.log('archiver has been finalized and the output file descriptor has closed.');
resolve();
});
output.on('end', function () {
CloudRunnerLogger.log('Data has been drained');
});
archive.on('warning', function (error) {
if (error.code === 'ENOENT') {
// log warning
CloudRunnerLogger.logWarning(error);
} else {
throw error;
}
});
archive.on('error', function (error) {
throw error;
}
});
archive.pipe(output);
archive.directory(path.resolve(`./../${path.basename(sourceFolder)}`), false);
archive.finalize();
});
archive.on('error', function (error) {
throw error;
});
archive.pipe(output);
archive.directory(`./../${path.basename(sourceFolder)}/`, false);
archive.finalize();
assert(fs.existsSync(`${cacheKey}.zip`));
assert(fs.existsSync(`${cacheFolder}`));
assert(fs.existsSync(`./../${path.basename(sourceFolder)}`));
assert(fs.existsSync(`${cacheKey}.zip`), 'cache zip exists');
assert(fs.existsSync(`${cacheFolder}`), 'cache folder');
assert(fs.existsSync(path.resolve(`./../${path.basename(sourceFolder)}`)), 'source folder exists');
await CloudRunnerSystem.Run(`mv ${cacheKey}.zip ${cacheFolder}`);
RemoteClientLogger.log(`moved ${cacheKey}.zip to ${cacheFolder}`);
assert(fs.existsSync(`${path.join(cacheFolder, cacheKey)}.zip`));
assert(fs.existsSync(`${path.join(cacheFolder, cacheKey)}.zip`), 'cache zip exists inside cache folder');
} catch (error) {
process.chdir(`${startPath}`);
throw error;
@ -97,7 +100,9 @@ export class Caching {
assert(`${fs.existsSync(destinationFolder)}`);
await extract(cacheSelection, { dir: `${path.basename(destinationFolder)}/` });
process.chdir(path.basename(destinationFolder));
await CloudRunnerSystem.Run(`mv "${path.basename(destinationFolder)}/*" "${destinationFolder}/.."`);
await CloudRunnerSystem.Run(
`mv "${path.basename(destinationFolder)}/*" "${path.resolve(`${destinationFolder}/..`)}"`,
);
} else {
RemoteClientLogger.logWarning(`cache item ${cacheKey} doesn't exist ${destinationFolder}`);
if (cacheSelection !== ``) {