UNPKG

@decaf-ts/fabric-weaver

Version:
67 lines 7.78 kB
"use strict"; /** * @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==