@decaf-ts/fabric-weaver
Version:
template for ts projects
26 lines • 3.64 kB
JavaScript
import { Logging } from "@decaf-ts/logging";
import { Command } from "commander";
import fs from "fs";
import path from "path";
import { cwd } from "process";
const program = new Command();
program
.command("add-node-shebang")
.description("Adds a shebang to the provided script")
.option("--file <string>", "Path to the script file")
.action(async (options) => {
const log = Logging.for("She-Bang");
const filePath = path.join(cwd(), options.file);
let content = fs.readFileSync(filePath, "utf8");
const shebang = "#!/usr/bin/env node";
if (!content.startsWith(shebang)) {
content = `${shebang}\n${content}`;
fs.writeFileSync(filePath, content, "utf8");
log.info(`Shebang added to ${filePath}`);
}
else {
log.error(`Shebang already present in ${filePath}`);
}
});
program.parse(process.argv);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlLWJhbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmluL3NoZS1iYW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUU5QixNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBRTlCLE9BQU87S0FDSixPQUFPLENBQUMsa0JBQWtCLENBQUM7S0FDM0IsV0FBVyxDQUFDLHVDQUF1QyxDQUFDO0tBQ3BELE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSx5QkFBeUIsQ0FBQztLQUNwRCxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ3hCLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEQsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFaEQsTUFBTSxPQUFPLEdBQUcscUJBQXFCLENBQUM7SUFFdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNqQyxPQUFPLEdBQUcsR0FBRyxPQUFPLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDbkMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQztTQUFNLENBQUM7UUFDTixHQUFHLENBQUMsS0FBSyxDQUFDLDhCQUE4QixRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7QUFDSCxDQUFDLENBQUMsQ0FBQztBQUVMLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9nZ2luZyB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCJjb21tYW5kZXJcIjtcbmltcG9ydCBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBjd2QgfSBmcm9tIFwicHJvY2Vzc1wiO1xuXG5jb25zdCBwcm9ncmFtID0gbmV3IENvbW1hbmQoKTtcblxucHJvZ3JhbVxuICAuY29tbWFuZChcImFkZC1ub2RlLXNoZWJhbmdcIilcbiAgLmRlc2NyaXB0aW9uKFwiQWRkcyBhIHNoZWJhbmcgdG8gdGhlIHByb3ZpZGVkIHNjcmlwdFwiKVxuICAub3B0aW9uKFwiLS1maWxlIDxzdHJpbmc+XCIsIFwiUGF0aCB0byB0aGUgc2NyaXB0IGZpbGVcIilcbiAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IGxvZyA9IExvZ2dpbmcuZm9yKFwiU2hlLUJhbmdcIik7XG4gICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4oY3dkKCksIG9wdGlvbnMuZmlsZSk7XG4gICAgbGV0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsIFwidXRmOFwiKTtcblxuICAgIGNvbnN0IHNoZWJhbmcgPSBcIiMhL3Vzci9iaW4vZW52IG5vZGVcIjtcblxuICAgIGlmICghY29udGVudC5zdGFydHNXaXRoKHNoZWJhbmcpKSB7XG4gICAgICBjb250ZW50ID0gYCR7c2hlYmFuZ31cXG4ke2NvbnRlbnR9YDtcbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIGNvbnRlbnQsIFwidXRmOFwiKTtcbiAgICAgIGxvZy5pbmZvKGBTaGViYW5nIGFkZGVkIHRvICR7ZmlsZVBhdGh9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZy5lcnJvcihgU2hlYmFuZyBhbHJlYWR5IHByZXNlbnQgaW4gJHtmaWxlUGF0aH1gKTtcbiAgICB9XG4gIH0pO1xuXG5wcm9ncmFtLnBhcnNlKHByb2Nlc3MuYXJndik7XG4iXX0=