@bitsy/hecks
Version:
a collection of re-usable scripts for bitsy game maker
59 lines (45 loc) • 1.43 kB
JavaScript
import fs from 'fs';
import {
basename
} from "path";
import eslint from "rollup-plugin-eslint";
import headerComment from "./HeaderCommentPlugin";
import topLevelOptions from "./TopLevelOptionsPlugin";
import readme from "./ReadmePlugin";
import build from './index';
const fsp = fs.promises;
const inputDir = "./src/";
const outputDir = "./dist/";
async function buildHacks(hacks) {
const outputFiles = hacks.map(name => `${outputDir}${basename(name).replace(/\s/g, '-')}`);
// make dist
!fs.existsSync(outputDir) && await fsp.mkdir(outputDir);
// cleanup old dist
await Promise.all(outputFiles.map(file => fs.existsSync(file) && fsp.unlink(file)));
// build
const output = await build(hacks, [
eslint({}),
readme.plugin(),
headerComment(),
topLevelOptions()
]);
// write to dist
await Promise.all(output.map((file, idx) => fsp.writeFile(outputFiles[idx], file)));
readme.parse();
readme.write();
}
async function getArgs() {
// use command-line args if present
if (process.argv.length > 2) {
return process.argv.slice(2);
}
// use source files otherwise
const srcFiles = await fsp.readdir(inputDir);
return srcFiles
.filter(file => file.match(/^.*?(?<!\.test)\.js$/))
.map(file => `${inputDir}${file}`);
}
getArgs()
.then(buildHacks)
.then(() => console.log('👍'))
.catch(err => console.error('👎\n', err));