link-stack/packages/zammad-addon-common/dist/lib.js
2023-05-09 12:26:23 +00:00

113 lines
No EOL
9.1 KiB
JavaScript

"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(4);
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 ({ name, version }) => {
const files = await packageFiles();
skeleton.files = files;
skeleton.builddate = new Date().toISOString();
skeleton.buildhost = os_1.default.hostname();
const pkg = JSON.stringify(skeleton, null, 2);
await fs_1.promises.writeFile(`../../docker/zammad/auto_install/${name}-v${version}.zpm`, pkg, 'utf-8');
};
exports.createZPM = createZPM;
const createMigration = async ({ packageName }) => {
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 = `${packageName}_${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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDJCQUFvQztBQUNwQyxnREFBd0I7QUFDeEIsNENBQW9CO0FBRXBCLE1BQU0sUUFBUSxHQUF3QjtJQUNwQyxNQUFNLEVBQUUsYUFBYTtJQUNyQixTQUFTLEVBQUUsT0FBTztJQUNsQixRQUFRLEVBQUUsK0JBQStCO0lBQ3pDLFNBQVMsRUFBRSxVQUFVO0lBQ3JCLEtBQUssRUFBRSxrRUFBa0U7SUFDekUsV0FBVyxFQUFFLEVBQUU7SUFDZixXQUFXLEVBQUUsRUFBRTtJQUNmLFlBQVksRUFBRTtRQUNaO1lBQ0UsU0FBUyxFQUFFLE9BQU87WUFDbEIsTUFBTSxFQUFFLFlBQVk7WUFDcEIsS0FBSyxFQUFFLGNBQWM7U0FDdEI7S0FDRjtJQUNELGFBQWEsRUFBRTtRQUNiO1lBQ0UsVUFBVSxFQUFFLElBQUk7WUFDaEIsTUFBTSxFQUFFLFdBQVc7U0FDcEI7S0FDRjtJQUNELE9BQU8sRUFBRSxFQUFFO0NBQ1osQ0FBQTtBQUVELE1BQU0sV0FBVyxHQUFHLEtBQUssRUFBRSxVQUFrQixFQUFnQixFQUFFO0lBQzdELE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxhQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxhQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sVUFBVSxHQUFH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