syndicate-js/todo/create/src/index.js

45 lines
1.5 KiB
JavaScript

const {Command, flags} = require('@oclif/command')
const path = require('path');
const fs = require('fs');
const unzip = require('unzipper');
class SyndicateLangCreateCommand extends Command {
async run() {
const { args, flags} = this.parse(SyndicateLangCreateCommand)
const directory = path.resolve(args.directory);
const packageName = flags.package || path.basename(directory);
console.log(`Creating package ${packageName} in ${directory}.`);
fs.mkdir(directory, { recursive: true }, (err) => {
if (err) throw err;
fs.createReadStream(path.join(__dirname, 'syndicate-template.zip')).pipe(
unzip.Extract({ path: directory }).on('close', (err) => {
if (err) throw err;
const packageJsonPath = path.join(directory, 'package.json');
const p = Object.assign({
name: packageName,
}, require(packageJsonPath));
fs.writeFile(packageJsonPath, JSON.stringify(p, null, 2), (err) => {
if (err) throw err;
});
}));
});
}
}
SyndicateLangCreateCommand.id = ''; // ???
SyndicateLangCreateCommand.args = [
{ name: 'directory', required: true },
];
SyndicateLangCreateCommand.description = `Create a new Syndicate/js package.`
SyndicateLangCreateCommand.flags = {
// add --version flag to show CLI version
version: flags.version({char: 'v'}),
// add --help flag to show CLI version
help: flags.help({char: 'h'}),
package: flags.string({char: 'n', description: 'package name to create'}),
}
module.exports = SyndicateLangCreateCommand