From e4450c37eebd7a7c034dcff0c7646d228a6b8ae7 Mon Sep 17 00:00:00 2001 From: Darren Clarke Date: Mon, 8 May 2023 07:46:46 +0000 Subject: [PATCH] Continue addon reorg --- package-lock.json | 19 +++ packages/zammad-addon-common/Makefile | 27 ---- .../zammad-addon-common/common.zpm.template | 28 ----- packages/zammad-addon-common/dist/index.d.ts | 2 + packages/zammad-addon-common/dist/index.js | 116 +++++++++++++++++ .../dist/tsconfig.tsbuildinfo | 1 + packages/zammad-addon-common/index.js | 0 packages/zammad-addon-common/index.ts | 117 ++++++++++++++++++ packages/zammad-addon-common/new-migration.py | 43 ------- packages/zammad-addon-common/package.json | 2 +- packages/zammad-addon-common/package.py | 75 ----------- packages/zammad-addon-common/test.js | 3 + packages/zammad-addon-common/tsconfig.json | 30 +++++ packages/zammad-addon-pgp/package.json | 14 +++ .../zammad-addon-pgp/{ => src}/.ruby-version | 0 packages/zammad-addon-pgp/{ => src}/Gemfile | 0 .../zammad-addon-pgp/{ => src}/Gemfile.lock | 0 17 files changed, 303 insertions(+), 174 deletions(-) delete mode 100644 packages/zammad-addon-common/Makefile delete mode 100644 packages/zammad-addon-common/common.zpm.template create mode 100644 packages/zammad-addon-common/dist/index.d.ts create mode 100644 packages/zammad-addon-common/dist/index.js create mode 100644 packages/zammad-addon-common/dist/tsconfig.tsbuildinfo delete mode 100644 packages/zammad-addon-common/index.js create mode 100644 packages/zammad-addon-common/index.ts delete mode 100755 packages/zammad-addon-common/new-migration.py delete mode 100755 packages/zammad-addon-common/package.py create mode 100644 packages/zammad-addon-common/test.js create mode 100644 packages/zammad-addon-common/tsconfig.json create mode 100644 packages/zammad-addon-pgp/package.json rename packages/zammad-addon-pgp/{ => src}/.ruby-version (100%) rename packages/zammad-addon-pgp/{ => src}/Gemfile (100%) rename packages/zammad-addon-pgp/{ => src}/Gemfile.lock (100%) diff --git a/package-lock.json b/package-lock.json index f9ae443..43089ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22487,6 +22487,14 @@ "node": "^12.20.0 || >=14" } }, + "node_modules/zammad-addon-common": { + "resolved": "packages/zammad-addon-common", + "link": true + }, + "node_modules/zammad-addon-pgp": { + "resolved": "packages/zammad-addon-pgp", + "link": true + }, "node_modules/zen-observable": { "version": "0.8.15", "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", @@ -25417,6 +25425,17 @@ "engines": { "node": ">=12" } + }, + "packages/zammad-addon-common": { + "version": "1.0.0", + "license": "ISC" + }, + "packages/zammad-addon-pgp": { + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "zammad-addon-common": "*" + } } } } diff --git a/packages/zammad-addon-common/Makefile b/packages/zammad-addon-common/Makefile deleted file mode 100644 index bb87200..0000000 --- a/packages/zammad-addon-common/Makefile +++ /dev/null @@ -1,27 +0,0 @@ -.PHONY: prep clean - -build: prep - @./package.py - @find dist/ -iname "*szpm" - -prep: - @mkdir -p dist - -clean: prep - @rm -rf dist/* - -fmt: - rufo src - -new-migration: - @./new-migration.py - -init: - @echo "Give your addon a name. No spaces." - @echo "Addon name?: "; \ - read NAME; \ - mkdir -p "src/db/addon/$${NAME}"; \ - sed -i "s/NAME/$${NAME}/" base.szpm.template; \ - mv base.szpm.template "$${NAME}.szpm.template" - -test: build diff --git a/packages/zammad-addon-common/common.zpm.template b/packages/zammad-addon-common/common.zpm.template deleted file mode 100644 index 89042a6..0000000 --- a/packages/zammad-addon-common/common.zpm.template +++ /dev/null @@ -1,28 +0,0 @@ -{ - "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": "First version with CDR secure defaults" - }, - { - "version": "0.0.2", - "date": "2020-02-11", - "log": "Fix bug when uninstalled" - } - ], - "description": [ - { - "language": "en", - "text": "Change me" - } - ], - "files": [] -} diff --git a/packages/zammad-addon-common/dist/index.d.ts b/packages/zammad-addon-common/dist/index.d.ts new file mode 100644 index 0000000..50a7c59 --- /dev/null +++ b/packages/zammad-addon-common/dist/index.d.ts @@ -0,0 +1,2 @@ +export declare const createZPM: () => Promise; +export declare const createMigration: () => Promise; diff --git a/packages/zammad-addon-common/dist/index.js b/packages/zammad-addon-common/dist/index.js new file mode 100644 index 0000000..8cc556e --- /dev/null +++ b/packages/zammad-addon-common/dist/index.js @@ -0,0 +1,116 @@ +"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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 \ No newline at end of file diff --git a/packages/zammad-addon-common/dist/tsconfig.tsbuildinfo b/packages/zammad-addon-common/dist/tsconfig.tsbuildinfo new file mode 100644 index 0000000..3468363 --- /dev/null +++ b/packages/zammad-addon-common/dist/tsconfig.tsbuildinfo @@ -0,0 +1 @@ +{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../index.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/dom-events.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@jest/expect-utils/build/index.d.ts","../../../node_modules/jest-matcher-utils/node_modules/chalk/index.d.ts","../../../node_modules/@sinclair/typebox/typebox.d.ts","../../../node_modules/@jest/schemas/build/index.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/jest-diff/build/index.d.ts","../../../node_modules/jest-matcher-utils/build/index.d.ts","../../../node_modules/expect/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts"],"fileInfos":[{"version":"8730f4bf322026ff5229336391a18bcaa1f94d4f82416c8b2f3954e2ccaae2ba","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","4b421cbfb3a38a27c279dec1e9112c3d1da296f77a1a85ddadf7e7a425d45d18","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"5f406584aef28a331c36523df688ca3650288d14f39c5d2e555c95f0d2ff8f6f","affectsGlobalScope":true},{"version":"22f230e544b35349cfb3bd9110b6ef37b41c6d6c43c3314a31bd0d9652fcec72","affectsGlobalScope":true},{"version":"7ea0b55f6b315cf9ac2ad622b0a7813315bb6e97bf4bb3fbf8f8affbca7dc695","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"eb26de841c52236d8222f87e9e6a235332e0788af8c87a71e9e210314300410a","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"5e5e095c4470c8bab227dbbc61374878ecead104c74ab9960d3adcccfee23205","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"2768ef564cfc0689a1b76106c421a2909bdff0acbe87da010785adab80efdd5c","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},{"version":"03b6c206b9e0995a9729f2021e568380e2ad567ce428d46511826dd22d21e4f5","signature":"225bf86a8fd9fd1fe0735de90f24d3ea203da6fdaf7e33b2b0ef2c3374c7a3ba"},"7e771891adaa85b690266bc37bd6eb43bc57eecc4b54693ead36467e7369952a","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"54ba7456adb777a685250cd144115ea51379784012ba1311255b715c6bdcff2a","affectsGlobalScope":true},"11e2d554398d2bd460e7d06b2fa5827a297c8acfbe00b4f894a224ac0862857f",{"version":"e193e634a99c9c1d71f1c6e4e1567a4a73584328d21ea02dd5cddbaad6693f61","affectsGlobalScope":true},"374ca798f244e464346f14301dc2a8b4b111af1a83b49fffef5906c338a1f922","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","e596c9bb2f29a2699fdd4ae89139612652245192f67f45617c5a4b20832aaae9","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","489532ff54b714f0e0939947a1c560e516d3ae93d51d639ab02e907a0e950114","f30bb836526d930a74593f7b0f5c1c46d10856415a8f69e5e2fc3db80371e362","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"6b526a5ec4a401ca7c26cfe6a48e641d8f30af76673bad3b06a1b4504594a960","affectsGlobalScope":true},{"version":"816ad2e607a96de5bcac7d437f843f5afd8957f1fa5eefa6bba8e4ed7ca8fd84","affectsGlobalScope":true},"80473bd0dd90ca1e166514c2dfead9d5803f9c51418864ca35abbeec6e6847e1","1c84b46267610a34028edfd0d035509341751262bac1062857f3c8df7aff7153","5eec82ac21f84d83586c59a16b9b8502d34505d1393393556682fe7e7fde9ef2","04eb6578a588d6a46f50299b55f30e3a04ef27d0c5a46c57d8fcc211cd530faa","8d3c583a07e0c37e876908c2d5da575019f689df8d9fa4c081d99119d53dba22","2c828a5405191d006115ab34e191b8474bc6c86ffdc401d1a9864b1b6e088a58",{"version":"e630e5528e899219ae319e83bef54bf3bcb91b01d76861ecf881e8e614b167f0","affectsGlobalScope":true},"bcebb922784739bdb34c18ee51095d25a92b560c78ccd2eaacd6bd00f7443d83","7ee6ed878c4528215c82b664fe0cfe80e8b4da6c0d4cc80869367868774db8b1","b0973c3cbcdc59b37bf477731d468696ecaf442593ec51bab497a613a580fe30",{"version":"4989e92ba5b69b182d2caaea6295af52b7dc73a4f7a2e336a676722884e7139d","affectsGlobalScope":true},{"version":"b3624aed92dab6da8484280d3cb3e2f4130ec3f4ef3f8201c95144ae9e898bb6","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","210d54cd652ec0fec8c8916e4af59bb341065576ecda039842f9ffb2e908507c","36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","7d55d78cd47cf5280643b53434b16c2d9d11d144126932759fbdd51da525eec4","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","69ee23dd0d215b09907ad30d23f88b7790c93329d1faf31d7835552a10cf7cbf","44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","09326ae5f7e3d49be5cd9ea00eb814770e71870a438faa2efd8bdd9b4db21320",{"version":"3c4ba1dd9b12ffa284b565063108f2f031d150ea15b8fafbdc17f5d2a07251f3","affectsGlobalScope":true},"e10177274a35a9d07c825615340b2fcde2f610f53f3fb40269fd196b4288dda6","c4577fb855ca259bdbf3ea663ca73988ce5f84251a92b4aef80a1f4122b6f98e","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"f0900cd5d00fe1263ff41201fb8073dbeb984397e4af3b8002a5c207a30bdc33","affectsGlobalScope":true},{"version":"ff07a9a03c65732ccc59b3c65bc584173da093bd563a6565411c01f5703bd3cb","affectsGlobalScope":true},"06d7c42d256f0ce6afe1b2b6cfbc97ab391f29dadb00dd0ae8e8f23f5bc916c3","ec4bd1b200670fb567920db572d6701ed42a9641d09c4ff6869768c8f81b404c","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa",{"version":"da26af7362f53d122283bc69fed862b9a9fe27e01bc6a69d1d682e0e5a4df3e6","affectsGlobalScope":true},"8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"d8d555f3d607ecaa18d55de6995ea8f206342ecc93305919eac945c7c78c78c6","6c1e688f95fcaf53b1e41c0fdadf2c1cfc96fa924eaf7f9fdb60f96deb0a4986","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","db25694be959314fd1e868d72e567746db1db9e2001fae545d12d2a8c1bba1b8","43883cf3635bb1846cbdc6c363787b76227677388c74f7313e3f0edb380840fa","2d47012580f859dae201d2eef898a416bdae719dffc087dfd06aefe3de2f9c8d","3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","2cec1a31729b9b01e9294c33fc9425d336eff067282809761ad2e74425d6d2a5",{"version":"458e2fd1185e659cb800ef68d01ef77de70dcab8860bedf6d94eaebe736751f1","affectsGlobalScope":true}],"options":{"declaration":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"inlineSourceMap":true,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUnusedLocals":false,"noUnusedParameters":false,"outDir":"./","target":7},"fileIdsList":[[89],[89,99],[89,101,104],[43,89],[46,89],[47,52,80,89],[48,59,60,67,77,88,89],[48,49,59,67,89],[50,89],[51,52,60,68,89],[52,77,85,89],[53,55,59,67,89],[54,89],[55,56,89],[59,89],[57,59,89],[59,60,61,77,88,89],[59,60,61,74,77,80,89],[89,93],[55,62,67,77,88,89],[59,60,62,63,67,77,85,88,89],[62,64,77,85,88,89],[43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],[59,65,89],[66,88,89],[55,59,67,77,89],[68,89],[69,89],[46,70,89],[71,87,89,93],[72,89],[73,89],[59,74,75,89],[74,76,89,91],[47,59,77,78,79,80,89],[47,77,79,89],[77,78,89],[80,89],[81,89],[59,83,84,89],[83,84,89],[52,67,77,85,89],[86,89],[67,87,89],[47,62,73,88,89],[52,89],[77,89,90],[89,91],[89,92],[47,52,59,61,70,77,88,89,91,93],[77,89,94],[89,97,103],[89,101],[89,98,102],[89,100],[60,68,69,89]],"referencedMap":[[97,1],[100,2],[99,1],[105,3],[43,4],[44,4],[46,5],[47,6],[48,7],[49,8],[50,9],[51,10],[52,11],[53,12],[54,13],[55,14],[56,14],[58,15],[57,16],[59,15],[60,17],[61,18],[45,19],[95,1],[62,20],[63,21],[64,22],[96,23],[65,24],[66,25],[67,26],[68,27],[69,28],[70,29],[71,30],[72,31],[73,32],[74,33],[75,33],[76,34],[77,35],[79,36],[78,37],[80,38],[81,39],[82,1],[83,40],[84,41],[85,42],[86,43],[87,44],[88,45],[89,46],[90,47],[91,48],[92,49],[93,50],[94,51],[104,52],[102,53],[103,54],[98,1],[101,55],[9,1],[8,1],[2,1],[10,1],[11,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[3,1],[4,1],[21,1],[18,1],[19,1],[20,1],[22,1],[23,1],[24,1],[5,1],[25,1],[26,1],[27,1],[28,1],[6,1],[32,1],[29,1],[30,1],[31,1],[33,1],[7,1],[34,1],[39,1],[40,1],[35,1],[36,1],[37,1],[38,1],[1,1],[41,1],[42,56]],"exportedModulesMap":[[97,1],[100,2],[99,1],[105,3],[43,4],[44,4],[46,5],[47,6],[48,7],[49,8],[50,9],[51,10],[52,11],[53,12],[54,13],[55,14],[56,14],[58,15],[57,16],[59,15],[60,17],[61,18],[45,19],[95,1],[62,20],[63,21],[64,22],[96,23],[65,24],[66,25],[67,26],[68,27],[69,28],[70,29],[71,30],[72,31],[73,32],[74,33],[75,33],[76,34],[77,35],[79,36],[78,37],[80,38],[81,39],[82,1],[83,40],[84,41],[85,42],[86,43],[87,44],[88,45],[89,46],[90,47],[91,48],[92,49],[93,50],[94,51],[104,52],[102,53],[103,54],[98,1],[101,55],[9,1],[8,1],[2,1],[10,1],[11,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[3,1],[4,1],[21,1],[18,1],[19,1],[20,1],[22,1],[23,1],[24,1],[5,1],[25,1],[26,1],[27,1],[28,1],[6,1],[32,1],[29,1],[30,1],[31,1],[33,1],[7,1],[34,1],[39,1],[40,1],[35,1],[36,1],[37,1],[38,1],[1,1],[41,1]],"semanticDiagnosticsPerFile":[97,100,99,105,43,44,46,47,48,49,50,51,52,53,54,55,56,58,57,59,60,61,45,95,62,63,64,96,65,66,67,68,69,70,71,72,73,74,75,76,77,79,78,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,104,102,103,98,101,9,8,2,10,11,12,13,14,15,16,17,3,4,21,18,19,20,22,23,24,5,25,26,27,28,6,32,29,30,31,33,7,34,39,40,35,36,37,38,1,41,42]},"version":"4.9.5"} \ No newline at end of file diff --git a/packages/zammad-addon-common/index.js b/packages/zammad-addon-common/index.js deleted file mode 100644 index e69de29..0000000 diff --git a/packages/zammad-addon-common/index.ts b/packages/zammad-addon-common/index.ts new file mode 100644 index 0000000..4ebbd4c --- /dev/null +++ b/packages/zammad-addon-common/index.ts @@ -0,0 +1,117 @@ +import { promises as fs } from "fs"; +import path from "path"; +import os from "os"; + +const skeleton: Record = { + "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: string): Promise => { + console.log(`Packaging: ${actualPath}`); + const packagePath = actualPath.slice(6); + const data = await fs.readFile(actualPath, "utf-8"); + const content = Buffer.from(data, "utf-8").toString("base64"); + const fileStats = await fs.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: any[] = []; + const ignoredPatterns = [/\.gitkeep/]; + + const processDir = async (dir: string) => { + const entries = await fs.readdir(dir, { withFileTypes: true }); + for (const entry of entries) { + const entryPath = path.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: string) => { + 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: string): string => { + const camelizedStr = str.replace(/_([a-z])/g, (g) => g[1].toUpperCase()); + + return camelizedStr.charAt(0).toUpperCase() + camelizedStr.slice(1); +} + +export const createZPM = async () => { + const files = await packageFiles(); + skeleton.files = files; + skeleton.builddate = new Date().toISOString(); + skeleton.buildhost = os.hostname(); + const name = skeleton.name.toLowerCase(); + const version = skeleton.version; + const pkg = JSON.stringify(skeleton, null, 2); + await fs.writeFile(`dist/${name}-v${version}.zpm`, pkg, 'utf-8'); +} + +export const createMigration = async () => { + const name = skeleton["name"].toLowerCase(); + const rawName: string = await new Promise((resolve) => { + process.stdin.setEncoding("utf-8"); + process.stdout.write("Enter migration name: "); + process.stdin.once("data", (data: string) => { + 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.join("src", "db", "addon", skeleton["name"]); + await fs.mkdir(addonDir, { recursive: true }); + await fs.writeFile(path.join(addonDir, migrationFileName), contents); +} + diff --git a/packages/zammad-addon-common/new-migration.py b/packages/zammad-addon-common/new-migration.py deleted file mode 100755 index f74b323..0000000 --- a/packages/zammad-addon-common/new-migration.py +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env python3 -import os -import json -import glob -import inflection -from datetime import datetime -from collections import OrderedDict - -migration_template = """class {} < ActiveRecord::Migration[5.2] - def self.up - # add your code here - end - - def self.down - # add your code here - end -end -""" - - -def load_skeleton(): - t = glob.glob('*.szpm.template') - if len(t) != 1: - raise Exception("Cannot find szpm template") - with open(t[0], 'r', encoding='utf-8') as f: - skeleton = json.load(f, object_pairs_hook=OrderedDict) - return skeleton - - -def main(): - skeleton = load_skeleton() - name = skeleton["name"].lower() - raw_name = input("Enter migration name: ") - migration_base_name = "{}_{}".format(name, inflection.underscore(raw_name)) - migration_name = inflection.camelize(migration_base_name, uppercase_first_letter=True) - contents = migration_template.format(migration_name) - time = datetime.utcnow().strftime("%Y%m%d%H%M%S") - migration_file_name = "{}_{}.rb".format(time, migration_base_name) - with open(os.path.join("src/db/addon/", skeleton["name"], migration_file_name), 'w') as f: - f.write(contents) - - -main() diff --git a/packages/zammad-addon-common/package.json b/packages/zammad-addon-common/package.json index 00cdecb..6619e08 100644 --- a/packages/zammad-addon-common/package.json +++ b/packages/zammad-addon-common/package.json @@ -4,7 +4,7 @@ "description": "", "main": "index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "build": "tsc" }, "author": "", "license": "ISC" diff --git a/packages/zammad-addon-common/package.py b/packages/zammad-addon-common/package.py deleted file mode 100755 index eae19c4..0000000 --- a/packages/zammad-addon-common/package.py +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/env python3 -import os -import base64 -import json -import datetime -import platform -import glob -import re -from collections import OrderedDict - -# files matching this pattern are not included in the package -ignored_patterns = [ - "\.gitkeep" -] - - -def encode(fname): - data = open(fname, "r", encoding='utf-8').read().encode('utf-8') - return base64.b64encode(data).decode('utf-8') - - -def read_perm(fname): - return int(oct(os.stat(fname).st_mode & 0o777)[-3:]) - - -def format_file(content, pkg_path, permission): - return OrderedDict( - location=pkg_path, - permission=permission, - encode="base64", - content=content) - - -def pkg_file(actual_path): - print(" Packaging: {}".format(actual_path)) - pkg_path = actual_path[6:] - contents = encode(actual_path) - res = format_file(contents, pkg_path, read_perm(actual_path)) - return res - - -def pkg_files(): - pkged_files = [] - for root, dirs, files in os.walk("./src/"): - for f in files: - if any(re.search(r, f) for r in ignored_patterns): - continue - actual_path = os.path.join(root, f) - pkged_files.append(pkg_file(actual_path)) - return pkged_files - - -def load_skeleton(): - t = glob.glob('*.szpm.template') - if len(t) != 1: - raise Exception("Cannot find szpm template") - with open(t[0], 'r', encoding='utf-8') as f: - skeleton = json.load(f, object_pairs_hook=OrderedDict) - return skeleton - - -def main(): - files = pkg_files() - skeleton = load_skeleton() - skeleton["files"] = files - skeleton["builddate"] = datetime.datetime.utcnow().isoformat() - skeleton["buildhost"] = platform.node() - name = skeleton["name"].lower() - version = skeleton["version"] - pkg = json.dumps(skeleton, indent=2) - with open("dist/{}-v{}.szpm".format(name, version), "w", encoding='utf-8') as f: - f.write(pkg) - - -main() diff --git a/packages/zammad-addon-common/test.js b/packages/zammad-addon-common/test.js new file mode 100644 index 0000000..ec60cf8 --- /dev/null +++ b/packages/zammad-addon-common/test.js @@ -0,0 +1,3 @@ +const { createZPM } = require("./dist/index.js"); + +console.log({ createZPM }); diff --git a/packages/zammad-addon-common/tsconfig.json b/packages/zammad-addon-common/tsconfig.json new file mode 100644 index 0000000..54f8595 --- /dev/null +++ b/packages/zammad-addon-common/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "incremental": true, + "target": "es2020", + "lib": [ + "es2020" + ], + "moduleResolution": "node", + "module": "commonjs", + "declaration": true, + "inlineSourceMap": true, + "esModuleInterop": true, + "resolveJsonModule": true, + "noUnusedLocals": false, + "noUnusedParameters": false, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "traceResolution": false, + "listEmittedFiles": false, + "listFiles": false, + "pretty": true, + "experimentalDecorators": true, + "emitDecoratorMetadata": true, + "outDir": "dist", + "types": [ + "node", + "jest" + ] + } +} diff --git a/packages/zammad-addon-pgp/package.json b/packages/zammad-addon-pgp/package.json new file mode 100644 index 0000000..7d22d95 --- /dev/null +++ b/packages/zammad-addon-pgp/package.json @@ -0,0 +1,14 @@ +{ + "name": "zammad-addon-pgp", + "version": "1.0.0", + "description": "Adds PGP integration into [Zammad](https://zammad.org) via [Sequoia](https://sequoia-pgp.org).", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "dependencies": { + "zammad-addon-common": "*" + }, + "author": "", + "license": "ISC" +} diff --git a/packages/zammad-addon-pgp/.ruby-version b/packages/zammad-addon-pgp/src/.ruby-version similarity index 100% rename from packages/zammad-addon-pgp/.ruby-version rename to packages/zammad-addon-pgp/src/.ruby-version diff --git a/packages/zammad-addon-pgp/Gemfile b/packages/zammad-addon-pgp/src/Gemfile similarity index 100% rename from packages/zammad-addon-pgp/Gemfile rename to packages/zammad-addon-pgp/src/Gemfile diff --git a/packages/zammad-addon-pgp/Gemfile.lock b/packages/zammad-addon-pgp/src/Gemfile.lock similarity index 100% rename from packages/zammad-addon-pgp/Gemfile.lock rename to packages/zammad-addon-pgp/src/Gemfile.lock