github-script/src/se.ts
2022-11-22 11:17:21 +01:00

61 lines
No EOL
2.6 KiB
TypeScript

export function createMetaJson(): string[] {
return createMetaJson('./')
}
export function createMetaJson(root: string): string[] {
var fs = require('fs');
const execSync = require('child_process').execSync;
const xmllint = execSync('sudo apt install libxml2-utils', { shell: '/bin/bash' });
console.log(xmllint.toString());
var command = `#!/bin/bash
cd ` + root + `
find . -name 'pom.xml' -type f > ` + root + `poms.txt
`;
const output = execSync(command, { shell: '/bin/bash' });
console.log(output.toString());
var poms = fs.readFileSync(root + 'poms.txt', 'utf8').toString();
var ownersFile = fs.readFileSync(root + '.github/CODEOWNERS', 'utf8').toString();
for (const pomRaw of poms.split('\n')) {
var pom = pomRaw.replace("\.\/", "/");
var name = pom.split("/")[2];
if (pom.startsWith("/components") && pom.indexOf(name + "-deployment/") > -1) {
var xml = fs.readFileSync(pomRaw, 'utf8');
var owners = [];
var reviewers = [];
for (const ownerRaw of ownersFile.split('\n')) {
var path = ownerRaw.split(' ')[0];
if (path.length > 3 && ownerRaw.indexOf(' @') > -1 && pom.startsWith(path)) {
owners.push(ownerRaw.split(' ')[1])
reviewers.push(ownerRaw.split(' ')[1])
}
}
var gid = `#!/bin/bash
cd ` + root + `
xmllint --xpath "/*[local-name()='project']/*[local-name()='groupId']/text()" ` + pom + `
`
var aid = `#!/bin/bash
cd ` + root + `
xmllint --xpath "/*[local-name()='project']/*[local-name()='artifactId']/text()" ` + pom + `
`
const groupId = execSync(gid, { shell: '/bin/bash' }).toString();
console.log(groupId);
const artifactId = execSync(aid, { shell: '/bin/bash' }).toString();
console.log(artifactId);
var meta = {};
meta['manifestSource'] = pom.replace("/pom.xml", "").substring(1);
meta['manifestTarget'] = "helm-chart/components/charts/" + name + "/" + name + "-deployment/templates/";
meta['owners'] = owners;
meta['reviewers'] = reviewers;
meta['branchName'] = name + "-deployment";
meta['mavenGroupId'] = groupId.trim();
meta['mavenArtifactId'] = artifactId.trim();
console.log(JSON.stringify(meta));
fs.writeFileSync(root + pomRaw.replace("/pom.xml", "/meta.json").substring(1), JSON.stringify(meta));
}
}
}