mirror of
https://github.com/actions/github-script.git
synced 2026-02-08 03:57:27 +00:00
61 lines
No EOL
2.6 KiB
TypeScript
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));
|
|
}
|
|
}
|
|
} |