Markwon/docs/collectArtifacts.js
2019-01-07 13:39:56 +03:00

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);