"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createMigration = exports.createZPM = void 0; const fs_1 = require("fs"); const path_1 = __importDefault(require("path")); const os_1 = __importDefault(require("os")); const skeleton = { "name": "PackageName", "version": "0.1.0", "vendor": "Center for Digital Resilience", "license": "AGPL-v3+", "url": "https://gitlab.com/digiresilience/link/zammad-addon-package-name", "buildhost": "", "builddate": "", "change_log": [ { "version": "0.0.1", "date": "2020-02-11", "log": "Some changes" } ], "description": [ { "language": "en", "text": "Change me" } ], "files": [] }; const packageFile = async (actualPath) => { console.log(`Packaging: ${actualPath}`); const packagePath = actualPath.slice(6); const data = await fs_1.promises.readFile(actualPath, "utf-8"); const content = Buffer.from(data, "utf-8").toString("base64"); const fileStats = await fs_1.promises.stat(actualPath); const permission = parseInt((fileStats.mode & 0o777).toString(8).slice(-3), 10); return { location: packagePath, permission, encode: "base64", content, }; }; const packageFiles = async () => { const packagedFiles = []; const ignoredPatterns = [/\.gitkeep/]; const processDir = async (dir) => { const entries = await fs_1.promises.readdir(dir, { withFileTypes: true }); for (const entry of entries) { const entryPath = path_1.default.join(dir, entry.name); if (entry.isDirectory()) { await processDir(entryPath); } else if (entry.isFile()) { if (!ignoredPatterns.some((pattern) => pattern.test(entry.name))) { packagedFiles.push(await packageFile(entryPath)); } } } }; await processDir("./src/"); return packagedFiles; }; const underscore = (str) => { return str .replace(/([a-z\d])([A-Z])/g, "$1_$2") .replace(/([A-Z]+)([A-Z][a-z\d]+)/g, "$1_$2") .toLowerCase(); }; const camelize = (str) => { const camelizedStr = str.replace(/_([a-z])/g, (g) => g[1].toUpperCase()); return camelizedStr.charAt(0).toUpperCase() + camelizedStr.slice(1); }; const createZPM = async () => { const files = await packageFiles(); skeleton.files = files; skeleton.builddate = new Date().toISOString(); skeleton.buildhost = os_1.default.hostname(); const name = skeleton.name.toLowerCase(); const version = skeleton.version; const pkg = JSON.stringify(skeleton, null, 2); await fs_1.promises.writeFile(`dist/${name}-v${version}.zpm`, pkg, 'utf-8'); }; exports.createZPM = createZPM; const createMigration = async () => { const name = skeleton["name"].toLowerCase(); const rawName = await new Promise((resolve) => { process.stdin.setEncoding("utf-8"); process.stdout.write("Enter migration name: "); process.stdin.once("data", (data) => { resolve(data.trim()); }); }); const migrationBaseName = `${name}_${underscore(rawName)}`; const migrationName = camelize(migrationBaseName); const migrationTemplate = `class MIGRATION_NAME < ActiveRecord::Migration[5.2] def self.up # add your code here end def self.down # add your code here end end`; const contents = migrationTemplate.replace("MIGRATION_NAME", migrationName); const time = new Date().toISOString().replace(/[-:.]/g, "").slice(0, 14); const migrationFileName = `${time}_${migrationBaseName}.rb`; const addonDir = path_1.default.join("src", "db", "addon", skeleton["name"]); await fs_1.promises.mkdir(addonDir, { recursive: true }); await fs_1.promises.writeFile(path_1.default.join(addonDir, migrationFileName), contents); }; exports.createMigration = createMigration; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyQkFBb0M7QUFDcEMsZ0RBQXdCO0FBQ3hCLDRDQUFvQjtBQUVwQixNQUFNLFFBQVEsR0FBd0I7SUFDcEMsTUFBTSxFQUFFLGFBQWE7SUFDckIsU0FBUyxFQUFFLE9BQU87SUFDbEIsUUFBUSxFQUFFLCtCQUErQjtJQUN6QyxTQUFTLEVBQUUsVUFBVTtJQUNyQixLQUFLLEVBQUUsa0VBQWtFO0lBQ3pFLFdBQVcsRUFBRSxFQUFFO0lBQ2YsV0FBVyxFQUFFLEVBQUU7SUFDZixZQUFZLEVBQUU7UUFDWjtZQUNFLFNBQVMsRUFBRSxPQUFPO1lBQ2xCLE1BQU0sRUFBRSxZQUFZO1lBQ3BCLEtBQUssRUFBRSxjQUFjO1NBQ3RCO0tBQ0Y7SUFDRCxhQUFhLEVBQUU7UUFDYjtZQUNFLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLE1BQU0sRUFBRSxXQUFXO1NBQ3BCO0tBQ0Y7SUFDRCxPQUFPLEVBQUUsRUFBRTtDQUNaLENBQUE7QUFFRCxNQUFNLFdBQVcsR0FBRyxLQUFLLEVBQUUsVUFBa0IsRUFBZ0IsRUFBRTtJQUM3RCxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUN4QyxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sSUFBSSxHQUFHLE1BQU0sYUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlELE1BQU0sU0FBUyxHQUFHLE1BQU0sYUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1QyxNQUFNLFVBQVUs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