mkjs-cli
Version:
Make-inspired build tool
55 lines (43 loc) • 1.19 kB
JavaScript
const H_FORMATS_GENERALIZED = {
nt: 'n',
nq: 'n',
ttl: 't',
trig: 't',
};
const A_FORMAT_MODES = [
'serializer',
'deserializer',
];
let pd_build = 'build';
let pd_packages = `${pd_build}/packages`;
let a_format_build_targets = [];
Object.keys(H_FORMATS_GENERALIZED).forEach((s_format) => {
a_format_build_targets.push(
...A_FORMAT_MODES.map(s_mode => `${pd_build}/${s_format}-${s_mode}/index.js`));
});
module.exports = () => ({
'&format': /(\w+)-((?:de)?serializer)/,
// all tasks
all: 'formats standalones',
// all formats x modes
formats: a_format_build_targets,
// build dir for package
[`${pd_packages}/:package`]: {
run: /* syntax: bash */ `
mkdir -p $@
cat src/aux/base-package.json | npx lamduh 'json => \
Object.assign(json, $(cat src/aux/package-descriptions.json | npx lambduh "json => json[\\'$package\\']")) \
&& json' $@/package.json
`,
},
// an RDF file format
[`${pd_packages}/(&format)/index.js`]: {
deps: [
h => `src/formats/${H_FORMATS_GENERALIZED[h.format[1]]}-${h.format[2]}.js.jmacs`,
`${pd_packages}/\${format[0]}`,
],
run: /* syntax: bash */ `
npx jmacs -g '{FORMAT:"\${format[1]}"}' $< > $@
`,
},
});