cdk-nextjs
Version:
Deploy Next.js apps on AWS with CDK
33 lines • 4.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.pruneFs = pruneFs;
const node_fs_1 = require("node:fs");
const node_path_1 = require("node:path");
const utils_1 = require("../utils");
/**
* Given `mountPath` and `currentBuildId`, delete all directories at `mountPath`
* that are not named `currentBuildId`
*/
function pruneFs(props) {
const { mountPath, currentBuildId } = props;
// Ensure the mount path exists
if (!(0, node_fs_1.existsSync)(mountPath)) {
(0, utils_1.debug)(`Mount path ${mountPath} does not exist, nothing to prune`);
return;
}
// Read all entries in the directory
const entries = (0, node_fs_1.readdirSync)(mountPath);
// Filter for directories only and exclude the current build ID
const directoriesToDelete = entries.filter((entry) => {
const entryPath = (0, node_path_1.join)(mountPath, entry);
return (0, node_fs_1.statSync)(entryPath).isDirectory() && entry !== currentBuildId;
});
// Delete each directory
for (const dir of directoriesToDelete) {
const dirPath = (0, node_path_1.join)(mountPath, dir);
(0, utils_1.debug)(`Pruning directory: ${dirPath}`);
(0, node_fs_1.rmSync)(dirPath, { recursive: true, force: true });
}
(0, utils_1.debug)(`Pruned ${directoriesToDelete.length} directories, kept ${currentBuildId}`);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJ1bmUtZnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGFtYmRhcy9wb3N0LWRlcGxveS9wcnVuZS1mcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWFBLDBCQTRCQztBQXpDRCxxQ0FBb0U7QUFDcEUseUNBQWlDO0FBQ2pDLG9DQUFpQztBQU9qQzs7O0dBR0c7QUFDSCxTQUFnQixPQUFPLENBQUMsS0FBbUI7SUFDekMsTUFBTSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFNUMsK0JBQStCO0lBQy9CLElBQUksQ0FBQyxJQUFBLG9CQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUMzQixJQUFBLGFBQUssRUFBQyxjQUFjLFNBQVMsbUNBQW1DLENBQUMsQ0FBQztRQUNsRSxPQUFPO0lBQ1QsQ0FBQztJQUVELG9DQUFvQztJQUNwQyxNQUFNLE9BQU8sR0FBRyxJQUFBLHFCQUFXLEVBQUMsU0FBUyxDQUFDLENBQUM7SUFFdkMsK0RBQStEO0lBQy9ELE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ25ELE1BQU0sU0FBUyxHQUFHLElBQUEsZ0JBQUksRUFBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekMsT0FBTyxJQUFBLGtCQUFRLEVBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLElBQUksS0FBSyxLQUFLLGNBQWMsQ0FBQztJQUN2RSxDQUFDLENBQUMsQ0FBQztJQUVILHdCQUF3QjtJQUN4QixLQUFLLE1BQU0sR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUM7UUFDdEMsTUFBTSxPQUFPLEdBQUcsSUFBQSxnQkFBSSxFQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNyQyxJQUFBLGFBQUssRUFBQyxzQkFBc0IsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN2QyxJQUFBLGdCQUFNLEVBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBQSxhQUFLLEVBQ0gsVUFBVSxtQkFBbUIsQ0FBQyxNQUFNLHNCQUFzQixjQUFjLEVBQUUsQ0FDM0UsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkZGlyU3luYywgc3RhdFN5bmMsIHJtU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgZGVidWcgfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxuaW50ZXJmYWNlIFBydW5lRnNQcm9wcyB7XG4gIG1vdW50UGF0aDogc3RyaW5nO1xuICBjdXJyZW50QnVpbGRJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEdpdmVuIGBtb3VudFBhdGhgIGFuZCBgY3VycmVudEJ1aWxkSWRgLCBkZWxldGUgYWxsIGRpcmVjdG9yaWVzIGF0IGBtb3VudFBhdGhgXG4gKiB0aGF0IGFyZSBub3QgbmFtZWQgYGN1cnJlbnRCdWlsZElkYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJ1bmVGcyhwcm9wczogUHJ1bmVGc1Byb3BzKSB7XG4gIGNvbnN0IHsgbW91bnRQYXRoLCBjdXJyZW50QnVpbGRJZCB9ID0gcHJvcHM7XG5cbiAgLy8gRW5zdXJlIHRoZSBtb3VudCBwYXRoIGV4aXN0c1xuICBpZiAoIWV4aXN0c1N5bmMobW91bnRQYXRoKSkge1xuICAgIGRlYnVnKGBNb3VudCBwYXRoICR7bW91bnRQYXRofSBkb2VzIG5vdCBleGlzdCwgbm90aGluZyB0byBwcnVuZWApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIFJlYWQgYWxsIGVudHJpZXMgaW4gdGhlIGRpcmVjdG9yeVxuICBjb25zdCBlbnRyaWVzID0gcmVhZGRpclN5bmMobW91bnRQYXRoKTtcblxuICAvLyBGaWx0ZXIgZm9yIGRpcmVjdG9yaWVzIG9ubHkgYW5kIGV4Y2x1ZGUgdGhlIGN1cnJlbnQgYnVpbGQgSURcbiAgY29uc3QgZGlyZWN0b3JpZXNUb0RlbGV0ZSA9IGVudHJpZXMuZmlsdGVyKChlbnRyeSkgPT4ge1xuICAgIGNvbnN0IGVudHJ5UGF0aCA9IGpvaW4obW91bnRQYXRoLCBlbnRyeSk7XG4gICAgcmV0dXJuIHN0YXRTeW5jKGVudHJ5UGF0aCkuaXNEaXJlY3RvcnkoKSAmJiBlbnRyeSAhPT0gY3VycmVudEJ1aWxkSWQ7XG4gIH0pO1xuXG4gIC8vIERlbGV0ZSBlYWNoIGRpcmVjdG9yeVxuICBmb3IgKGNvbnN0IGRpciBvZiBkaXJlY3Rvcmllc1RvRGVsZXRlKSB7XG4gICAgY29uc3QgZGlyUGF0aCA9IGpvaW4obW91bnRQYXRoLCBkaXIpO1xuICAgIGRlYnVnKGBQcnVuaW5nIGRpcmVjdG9yeTogJHtkaXJQYXRofWApO1xuICAgIHJtU3luYyhkaXJQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gIH1cblxuICBkZWJ1ZyhcbiAgICBgUHJ1bmVkICR7ZGlyZWN0b3JpZXNUb0RlbGV0ZS5sZW5ndGh9IGRpcmVjdG9yaWVzLCBrZXB0ICR7Y3VycmVudEJ1aWxkSWR9YCxcbiAgKTtcbn1cbiJdfQ==