Added se functions

This commit is contained in:
Jonas Bovin 2022-11-22 11:17:21 +01:00
parent d556feaca3
commit 7f0bee3df8
2 changed files with 62 additions and 0 deletions

View file

@ -19,6 +19,7 @@ The following arguments will be provided:
- `io` A reference to the [@actions/io](https://github.com/actions/toolkit/tree/main/packages/io) package
- `exec` A reference to the [@actions/exec](https://github.com/actions/toolkit/tree/main/packages/exec) package
- `require` A proxy wrapper around the normal Node.js `require` to enable
- 'se' A library for resusbale functions
requiring relative paths (relative to the current working directory) and
requiring npm packages installed in the current working directory. If for
some reason you need the non-wrapped `require`, there is an escape hatch

61
src/se.ts Normal file
View file

@ -0,0 +1,61 @@
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));
}
}
}