51 lines
1.5 KiB
JavaScript
51 lines
1.5 KiB
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const PROPERTIES_FILE_NAME = 'gradle.properties';
|
|
const PROP_GROUP = 'GROUP';
|
|
const PROP_DESCRIPTION = 'POM_DESCRIPTION';
|
|
const PROP_ARTIFACT_NAME = 'POM_NAME';
|
|
const PROP_ARTIFACT_ID = 'POM_ARTIFACT_ID';
|
|
|
|
const readProperties = (file) => fs.readFileSync(file, { encoding: 'utf-8' }, 'string')
|
|
.split('\n')
|
|
// filter-out empty lines
|
|
.filter(s => s)
|
|
.map(s => s.split('='))
|
|
.reduce((a, s) => {
|
|
a[s[0]] = s[1];
|
|
return a;
|
|
}, {});
|
|
|
|
const listDirectories = (folder) => fs.readdirSync(folder)
|
|
.map(name => path.join(folder, name))
|
|
.filter(f => fs.lstatSync(f).isDirectory());
|
|
|
|
const projectDir = path.resolve(__dirname, '../');
|
|
|
|
const projectProperties = readProperties(path.join(projectDir, PROPERTIES_FILE_NAME));
|
|
|
|
const projectGroup = projectProperties[PROP_GROUP]
|
|
|
|
const artifacts = listDirectories(projectDir)
|
|
.map(dir => path.join(dir, PROPERTIES_FILE_NAME))
|
|
.filter(f => fs.existsSync(f))
|
|
.map(readProperties)
|
|
.map(props => {
|
|
return {
|
|
id: props[PROP_ARTIFACT_ID],
|
|
name: props[PROP_ARTIFACT_NAME],
|
|
group: projectGroup,
|
|
description: props[PROP_DESCRIPTION]
|
|
}
|
|
});
|
|
|
|
const artifactsFile = path.join(__dirname, '.vuepress', '.artifacts.js');
|
|
const artifactsJs = `
|
|
// this is a generated file, do not modify. To update it run 'collectArtifacts.js' script
|
|
const artifacts = ${JSON.stringify(artifacts)};
|
|
export { artifacts };
|
|
`
|
|
|
|
fs.writeFileSync(artifactsFile, artifactsJs);
|