@selfage/cli
Version:
Basic CLI to buid, run and format TypeScript code.
46 lines • 5.61 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.clean = clean;
exports.cleanDir = cleanDir;
const fs = require("fs");
const path = require("path");
const ignore_1 = __importDefault(require("ignore"));
async function clean() {
await cleanDir(".");
}
async function cleanDir(dir) {
let [files, gitignore] = await Promise.all([
findFilesRecursively(dir),
fs.promises.readFile(path.join(dir, ".gitignore")),
]);
let ignorePatterns = (0, ignore_1.default)().add(gitignore
.toString()
.split("\n")
.map((pattern) => pattern.trim()));
let unwantedFiles = files.filter((file) => ignorePatterns.ignores(file));
let promisesToUnlink = unwantedFiles.map((file) => fs.promises.unlink(file));
await Promise.all(promisesToUnlink);
}
async function findFilesRecursively(dir) {
let items = await fs.promises.readdir(dir, { withFileTypes: true });
let files = [];
let promisesOfFiles = items.map(async (item) => {
let fullPath = path.join(dir, item.name);
if (item.isDirectory()) {
if (item.name === "node_modules") {
return;
}
let filesFromSubDirectory = await findFilesRecursively(fullPath);
files.push(...filesFromSubDirectory);
}
else {
files.push(fullPath);
}
});
await Promise.all(promisesOfFiles);
return files;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYW5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNsZWFuZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFJQSxzQkFFQztBQUVELDRCQWNDO0FBdEJELHlCQUEwQjtBQUMxQiw2QkFBOEI7QUFDOUIsb0RBQTRCO0FBRXJCLEtBQUssVUFBVSxLQUFLO0lBQ3pCLE1BQU0sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLENBQUM7QUFFTSxLQUFLLFVBQVUsUUFBUSxDQUFDLEdBQVc7SUFDeEMsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFDekMsb0JBQW9CLENBQUMsR0FBRyxDQUFDO1FBQ3pCLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO0tBQ25ELENBQUMsQ0FBQztJQUNILElBQUksY0FBYyxHQUFHLElBQUEsZ0JBQU0sR0FBRSxDQUFDLEdBQUcsQ0FDL0IsU0FBUztTQUNOLFFBQVEsRUFBRTtTQUNWLEtBQUssQ0FBQyxJQUFJLENBQUM7U0FDWCxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUNwQyxDQUFDO0lBQ0YsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLElBQUksZ0JBQWdCLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM3RSxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQsS0FBSyxVQUFVLG9CQUFvQixDQUFDLEdBQVc7SUFDN0MsSUFBSSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRSxJQUFJLEtBQUssR0FBYSxFQUFFLENBQUM7SUFDekIsSUFBSSxlQUFlLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFpQixFQUFFO1FBQzVELElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxjQUFjLEVBQUUsQ0FBQztnQkFDakMsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLHFCQUFxQixHQUFHLE1BQU0sb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLHFCQUFxQixDQUFDLENBQUM7UUFDdkMsQ0FBQzthQUFNLENBQUM7WUFDTixLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNuQyxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgPSByZXF1aXJlKFwiZnNcIik7XG5pbXBvcnQgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuaW1wb3J0IGlnbm9yZSBmcm9tIFwiaWdub3JlXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjbGVhbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgY2xlYW5EaXIoXCIuXCIpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2xlYW5EaXIoZGlyOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgbGV0IFtmaWxlcywgZ2l0aWdub3JlXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICBmaW5kRmlsZXNSZWN1cnNpdmVseShkaXIpLFxuICAgIGZzLnByb21pc2VzLnJlYWRGaWxlKHBhdGguam9pbihkaXIsIFwiLmdpdGlnbm9yZVwiKSksXG4gIF0pO1xuICBsZXQgaWdub3JlUGF0dGVybnMgPSBpZ25vcmUoKS5hZGQoXG4gICAgZ2l0aWdub3JlXG4gICAgICAudG9TdHJpbmcoKVxuICAgICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgICAubWFwKChwYXR0ZXJuKSA9PiBwYXR0ZXJuLnRyaW0oKSlcbiAgKTtcbiAgbGV0IHVud2FudGVkRmlsZXMgPSBmaWxlcy5maWx0ZXIoKGZpbGUpID0+IGlnbm9yZVBhdHRlcm5zLmlnbm9yZXMoZmlsZSkpO1xuICBsZXQgcHJvbWlzZXNUb1VubGluayA9IHVud2FudGVkRmlsZXMubWFwKChmaWxlKSA9PiBmcy5wcm9taXNlcy51bmxpbmsoZmlsZSkpO1xuICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlc1RvVW5saW5rKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmluZEZpbGVzUmVjdXJzaXZlbHkoZGlyOiBzdHJpbmcpOiBQcm9taXNlPEFycmF5PHN0cmluZz4+IHtcbiAgbGV0IGl0ZW1zID0gYXdhaXQgZnMucHJvbWlzZXMucmVhZGRpcihkaXIsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KTtcbiAgbGV0IGZpbGVzOiBzdHJpbmdbXSA9IFtdO1xuICBsZXQgcHJvbWlzZXNPZkZpbGVzID0gaXRlbXMubWFwKGFzeW5jIChpdGVtKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgbGV0IGZ1bGxQYXRoID0gcGF0aC5qb2luKGRpciwgaXRlbS5uYW1lKTtcbiAgICBpZiAoaXRlbS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICBpZiAoaXRlbS5uYW1lID09PSBcIm5vZGVfbW9kdWxlc1wiKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxldCBmaWxlc0Zyb21TdWJEaXJlY3RvcnkgPSBhd2FpdCBmaW5kRmlsZXNSZWN1cnNpdmVseShmdWxsUGF0aCk7XG4gICAgICBmaWxlcy5wdXNoKC4uLmZpbGVzRnJvbVN1YkRpcmVjdG9yeSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpbGVzLnB1c2goZnVsbFBhdGgpO1xuICAgIH1cbiAgfSk7XG4gIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzT2ZGaWxlcyk7XG4gIHJldHVybiBmaWxlcztcbn1cbiJdfQ==