Repo cleanup

This commit is contained in:
Darren Clarke 2026-02-10 08:36:04 +01:00
parent 59872f579a
commit e941353b64
444 changed files with 1485 additions and 21978 deletions

View file

@ -1,100 +0,0 @@
#!/usr/bin/env node
import { promises as fs } from "fs";
import { glob } from "glob";
import path from "path";
import os from "os";
import { createLogger } from "@link-stack/logger";
const logger = createLogger('zammad-addon-build');
const packageFile = async (actualPath: string): Promise<any> => {
logger.info({ actualPath }, 'Packaging file');
const packagePath = actualPath.slice(4);
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/,
/Gemfile/,
/Gemfile.lock/,
/\.ruby-version/,
];
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;
};
export const createZPM = async ({
name,
displayName,
version,
}: Record<string, string>) => {
const files = await packageFiles();
const skeleton = {
name: displayName,
version,
vendor: "Center for Digital Resilience",
license: "AGPL-v3+",
url: `https://gitlab.com/digiresilience/link/link-stack/packages/${name}`,
buildhost: os.hostname(),
builddate: new Date().toISOString(),
files,
};
const pkg = JSON.stringify(skeleton, null, 2);
try {
// @ts-ignore
const files = await glob(`../../docker/zammad/addons/${name}-v*.zpm`, {});
for (const file of files) {
await fs.unlink(file);
logger.info({ file }, 'File was deleted');
}
} catch (err) {
logger.error({ error: err }, 'Error removing old addon files');
}
await fs.writeFile(
`../../docker/zammad/addons/${name}-v${version}.zpm`,
pkg,
"utf-8",
);
};
const main = async () => {
const packageJSON = JSON.parse(await fs.readFile("./package.json", "utf-8"));
const { name: fullName, displayName, version } = packageJSON;
logger.info({ displayName, version }, 'Building addon');
const name = fullName.split("/").pop();
await createZPM({ name, displayName, version });
};
main();

View file

@ -1,53 +0,0 @@
#!/usr/bin/env node
import { promises as fs } from "fs";
import path from "path";
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 createMigration = async ({ displayName }: Record<string, string>) => {
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 = `${displayName}_${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", displayName);
await fs.mkdir(addonDir, { recursive: true });
await fs.writeFile(path.join(addonDir, migrationFileName), contents);
}
const main = async () => {
const packageJSON = JSON.parse(await fs.readFile("./package.json", "utf-8"));
const { displayName } = packageJSON;
await createMigration({ displayName });
}
main();

View file

@ -1,22 +0,0 @@
{
"name": "@link-stack/zammad-addon-common",
"version": "3.5.0-beta.1",
"description": "",
"bin": {
"zpm-build": "./dist/build.js",
"zpm-migrate": "./dist/migrate.js"
},
"scripts": {
"build": "tsc"
},
"devDependencies": {
"@types/node": "^24.7.0",
"typescript": "^5"
},
"author": "",
"license": "AGPL-3.0-or-later",
"dependencies": {
"@link-stack/logger": "workspace:*",
"glob": "^11.0.3"
}
}

View file

@ -1,25 +0,0 @@
{
"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"]
}
}