@decaf-ts/fabric-weaver
Version:
template for ts projects
67 lines • 7.78 kB
JavaScript
;
/**
* @module build-scripts
* @description Custom build scripts for the fabric-weaver project.
* @summary This module extends the BuildScripts class from @decaf-ts/utils to provide custom build functionality for the fabric-weaver project. It includes utilities for building command-line interfaces and handling different module formats (CommonJS and ES Modules).
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.BuildScriptsCustom = void 0;
const utils_1 = require("@decaf-ts/utils");
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
/**
* @description Enumeration of module modes.
* @summary Defines the different module formats supported in the build process.
* @enum {string}
* @readonly
* @memberOf module:build-scripts
*/
var Modes;
(function (Modes) {
/** CommonJS module format */
Modes["CJS"] = "commonjs";
/** ECMAScript module format (ES2022) */
Modes["ESM"] = "es2022";
})(Modes || (Modes = {}));
/**
* @description Custom build scripts for the fabric-weaver project.
* @summary Extends the BuildScripts class to provide project-specific build functionality, including command bundling and file manipulation.
* @class BuildScriptsCustom
* @extends BuildScripts
*/
class BuildScriptsCustom extends utils_1.BuildScripts {
/**
* @description Builds command-line interfaces for the project.
* @summary Processes each command in the Commands array, bundling the TypeScript files, adding a shebang line, and setting appropriate permissions.
* @return {Promise<void>}
* @mermaid
* sequenceDiagram
* participant BuildScriptsCustom
* participant FileSystem
* loop For each command
* BuildScriptsCustom->>BuildScriptsCustom: bundle(Modes.CJS, true, true, `src/bin/${cmd}.ts`, cmd)
* BuildScriptsCustom->>FileSystem: readFile(`bin/${cmd}.cjs`)
* FileSystem-->>BuildScriptsCustom: file content
* BuildScriptsCustom->>BuildScriptsCustom: Add shebang to file content
* BuildScriptsCustom->>FileSystem: writeFile(`bin/${cmd}.cjs`, modified content)
* BuildScriptsCustom->>FileSystem: chmodSync(`bin/${cmd}.cjs`, "755")
* end
*/
async buildCommands() {
const commands = fs_1.default.readdirSync(path_1.default.join(process.cwd() + "/src/bin"));
for (const cmd of commands) {
if (!cmd.endsWith(".ts"))
continue;
await this.bundle(Modes.CJS, true, true, `src/bin/${cmd}`, cmd);
let data = (0, utils_1.readFile)(`bin/${cmd}.cjs`);
data = "#!/usr/bin/env node\n" + data;
(0, utils_1.writeFile)(`bin/${cmd}.cjs`, data);
fs_1.default.chmodSync(`bin/${cmd}.cjs`, "755");
}
}
}
exports.BuildScriptsCustom = BuildScriptsCustom;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtc2NyaXB0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy1vbGQvYnVpbGQtc2NyaXB0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7Ozs7O0FBRUgsMkNBQW9FO0FBQ3BFLDRDQUFvQjtBQUNwQixnREFBd0I7QUFFeEI7Ozs7OztHQU1HO0FBQ0gsSUFBSyxLQUtKO0FBTEQsV0FBSyxLQUFLO0lBQ1IsNkJBQTZCO0lBQzdCLHlCQUFnQixDQUFBO0lBQ2hCLHdDQUF3QztJQUN4Qyx1QkFBYyxDQUFBO0FBQ2hCLENBQUMsRUFMSSxLQUFLLEtBQUwsS0FBSyxRQUtUO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFhLGtCQUFtQixTQUFRLG9CQUFZO0lBQ2xEOzs7Ozs7Ozs7Ozs7Ozs7O09BZ0JHO0lBQ0gsS0FBSyxDQUFDLGFBQWE7UUFDakIsTUFBTSxRQUFRLEdBQUcsWUFBRSxDQUFDLFdBQVcsQ0FBQyxjQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLEtBQUssTUFBTSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO2dCQUFFLFNBQVM7WUFFbkMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ2hFLElBQUksSUFBSSxHQUFHLElBQUEsZ0JBQVEsRUFBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUM7WUFDdEMsSUFBSSxHQUFHLHVCQUF1QixHQUFHLElBQUksQ0FBQztZQUN0QyxJQUFBLGlCQUFTLEVBQUMsT0FBTyxHQUFHLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsQyxZQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7Q0FDRjtBQTlCRCxnREE4QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgYnVpbGQtc2NyaXB0c1xuICogQGRlc2NyaXB0aW9uIEN1c3RvbSBidWlsZCBzY3JpcHRzIGZvciB0aGUgZmFicmljLXdlYXZlciBwcm9qZWN0LlxuICogQHN1bW1hcnkgVGhpcyBtb2R1bGUgZXh0ZW5kcyB0aGUgQnVpbGRTY3JpcHRzIGNsYXNzIGZyb20gQGRlY2FmLXRzL3V0aWxzIHRvIHByb3ZpZGUgY3VzdG9tIGJ1aWxkIGZ1bmN0aW9uYWxpdHkgZm9yIHRoZSBmYWJyaWMtd2VhdmVyIHByb2plY3QuIEl0IGluY2x1ZGVzIHV0aWxpdGllcyBmb3IgYnVpbGRpbmcgY29tbWFuZC1saW5lIGludGVyZmFjZXMgYW5kIGhhbmRsaW5nIGRpZmZlcmVudCBtb2R1bGUgZm9ybWF0cyAoQ29tbW9uSlMgYW5kIEVTIE1vZHVsZXMpLlxuICovXG5cbmltcG9ydCB7IEJ1aWxkU2NyaXB0cywgcmVhZEZpbGUsIHdyaXRlRmlsZSB9IGZyb20gXCJAZGVjYWYtdHMvdXRpbHNcIjtcbmltcG9ydCBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEVudW1lcmF0aW9uIG9mIG1vZHVsZSBtb2Rlcy5cbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGRpZmZlcmVudCBtb2R1bGUgZm9ybWF0cyBzdXBwb3J0ZWQgaW4gdGhlIGJ1aWxkIHByb2Nlc3MuXG4gKiBAZW51bSB7c3RyaW5nfVxuICogQHJlYWRvbmx5XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmJ1aWxkLXNjcmlwdHNcbiAqL1xuZW51bSBNb2RlcyB7XG4gIC8qKiBDb21tb25KUyBtb2R1bGUgZm9ybWF0ICovXG4gIENKUyA9IFwiY29tbW9uanNcIixcbiAgLyoqIEVDTUFTY3JpcHQgbW9kdWxlIGZvcm1hdCAoRVMyMDIyKSAqL1xuICBFU00gPSBcImVzMjAyMlwiLFxufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDdXN0b20gYnVpbGQgc2NyaXB0cyBmb3IgdGhlIGZhYnJpYy13ZWF2ZXIgcHJvamVjdC5cbiAqIEBzdW1tYXJ5IEV4dGVuZHMgdGhlIEJ1aWxkU2NyaXB0cyBjbGFzcyB0byBwcm92aWRlIHByb2plY3Qtc3BlY2lmaWMgYnVpbGQgZnVuY3Rpb25hbGl0eSwgaW5jbHVkaW5nIGNvbW1hbmQgYnVuZGxpbmcgYW5kIGZpbGUgbWFuaXB1bGF0aW9uLlxuICogQGNsYXNzIEJ1aWxkU2NyaXB0c0N1c3RvbVxuICogQGV4dGVuZHMgQnVpbGRTY3JpcHRzXG4gKi9cbmV4cG9ydCBjbGFzcyBCdWlsZFNjcmlwdHNDdXN0b20gZXh0ZW5kcyBCdWlsZFNjcmlwdHMge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEJ1aWxkcyBjb21tYW5kLWxpbmUgaW50ZXJmYWNlcyBmb3IgdGhlIHByb2plY3QuXG4gICAqIEBzdW1tYXJ5IFByb2Nlc3NlcyBlYWNoIGNvbW1hbmQgaW4gdGhlIENvbW1hbmRzIGFycmF5LCBidW5kbGluZyB0aGUgVHlwZVNjcmlwdCBmaWxlcywgYWRkaW5nIGEgc2hlYmFuZyBsaW5lLCBhbmQgc2V0dGluZyBhcHByb3ByaWF0ZSBwZXJtaXNzaW9ucy5cbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn1cbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQnVpbGRTY3JpcHRzQ3VzdG9tXG4gICAqICAgcGFydGljaXBhbnQgRmlsZVN5c3RlbVxuICAgKiAgIGxvb3AgRm9yIGVhY2ggY29tbWFuZFxuICAgKiAgICAgQnVpbGRTY3JpcHRzQ3VzdG9tLT4+QnVpbGRTY3JpcHRzQ3VzdG9tOiBidW5kbGUoTW9kZXMuQ0pTLCB0cnVlLCB0cnVlLCBgc3JjL2Jpbi8ke2NtZH0udHNgLCBjbWQpXG4gICAqICAgICBCdWlsZFNjcmlwdHNDdXN0b20tPj5GaWxlU3lzdGVtOiByZWFkRmlsZShgYmluLyR7Y21kfS5janNgKVxuICAgKiAgICAgRmlsZVN5c3RlbS0tPj5CdWlsZFNjcmlwdHNDdXN0b206IGZpbGUgY29udGVudFxuICAgKiAgICAgQnVpbGRTY3JpcHRzQ3VzdG9tLT4+QnVpbGRTY3JpcHRzQ3VzdG9tOiBBZGQgc2hlYmFuZyB0byBmaWxlIGNvbnRlbnRcbiAgICogICAgIEJ1aWxkU2NyaXB0c0N1c3RvbS0+PkZpbGVTeXN0ZW06IHdyaXRlRmlsZShgYmluLyR7Y21kfS5janNgLCBtb2RpZmllZCBjb250ZW50KVxuICAgKiAgICAgQnVpbGRTY3JpcHRzQ3VzdG9tLT4+RmlsZVN5c3RlbTogY2htb2RTeW5jKGBiaW4vJHtjbWR9LmNqc2AsIFwiNzU1XCIpXG4gICAqICAgZW5kXG4gICAqL1xuICBhc3luYyBidWlsZENvbW1hbmRzKCkge1xuICAgIGNvbnN0IGNvbW1hbmRzID0gZnMucmVhZGRpclN5bmMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCkgKyBcIi9zcmMvYmluXCIpKTtcbiAgICBmb3IgKGNvbnN0IGNtZCBvZiBjb21tYW5kcykge1xuICAgICAgaWYgKCFjbWQuZW5kc1dpdGgoXCIudHNcIikpIGNvbnRpbnVlO1xuXG4gICAgICBhd2FpdCB0aGlzLmJ1bmRsZShNb2Rlcy5DSlMsIHRydWUsIHRydWUsIGBzcmMvYmluLyR7Y21kfWAsIGNtZCk7XG4gICAgICBsZXQgZGF0YSA9IHJlYWRGaWxlKGBiaW4vJHtjbWR9LmNqc2ApO1xuICAgICAgZGF0YSA9IFwiIyEvdXNyL2Jpbi9lbnYgbm9kZVxcblwiICsgZGF0YTtcbiAgICAgIHdyaXRlRmlsZShgYmluLyR7Y21kfS5janNgLCBkYXRhKTtcbiAgICAgIGZzLmNobW9kU3luYyhgYmluLyR7Y21kfS5janNgLCBcIjc1NVwiKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==