@neo-one/server-plugin-simulation
Version:
NEO•ONE Server simulation plugin.
35 lines (33 loc) • 5.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const fs = tslib_1.__importStar(require("fs-extra"));
const path = tslib_1.__importStar(require("path"));
const errors_1 = require("./errors");
const requireResolve = (pkg, requirePath) => path.resolve(require.resolve(pkg), requirePath);
const setupSimulation = async (pkg, dirName, config) => {
const simulationPath = path.resolve(process.cwd(), dirName);
await fs.ensureDir(simulationPath);
await fs.copy(requireResolve(pkg, config.templateDir), simulationPath);
};
const tryRequireSimulation = (pkg) => {
try {
const config = require(pkg);
return config != undefined && config.default != undefined ? config.default : config;
}
catch (_a) {
throw new errors_1.CouldNotLoadSimulationError(pkg);
}
};
exports.createCommand = ({ cli }) => cli.vorpal
.command('create simulation <dirName> <simulation>', 'Create a NEO•ONE simulation.')
.action(async (args) => {
const dirName = args.dirName;
const pkg = args.simulation;
cli.print('Loading simulation package...');
const config = tryRequireSimulation(pkg);
cli.print('Setting up simulation...');
await setupSimulation(pkg, dirName, config);
cli.print(`Created simulation in ${dirName}.`);
});
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNyZWF0ZUNvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQStCO0FBQy9CLG1EQUE2QjtBQUM3QixxQ0FBdUQ7QUFHdkQsTUFBTSxjQUFjLEdBQUcsQ0FBQyxHQUFXLEVBQUUsV0FBbUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRTdHLE1BQU0sZUFBZSxHQUFHLEtBQUssRUFBRSxHQUFXLEVBQUUsT0FBZSxFQUFFLE1BQXdCLEVBQUUsRUFBRTtJQUN2RixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1RCxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDbkMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQ3pFLENBQUMsQ0FBQztBQUVGLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxHQUFXLEVBQW9CLEVBQUU7SUFDN0QsSUFBSTtRQUNGLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU1QixPQUFPLE1BQU0sSUFBSSxTQUFTLElBQUksTUFBTSxDQUFDLE9BQU8sSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztLQUNyRjtJQUFDLFdBQU07UUFDTixNQUFNLElBQUksb0NBQTJCLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDNUM7QUFDSCxDQUFDLENBQUM7QUFFVyxRQUFBLGFBQWEsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFzQixFQUFFLEVBQUUsQ0FDM0QsR0FBRyxDQUFDLE1BQU07S0FDUCxPQUFPLENBQUMsMENBQTBDLEVBQUUsOEJBQThCLENBQUM7S0FDbkYsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtJQUNyQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQzdCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDNUIsR0FBRyxDQUFDLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sTUFBTSxHQUFHLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLEdBQUcsQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUN0QyxNQUFNLGVBQWUsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLEdBQUcsQ0FBQyxLQUFLLENBQUMseUJBQXlCLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDakQsQ0FBQyxDQUFDLENBQUMiLCJmaWxlIjoibmVvLW9uZS1zZXJ2ZXItcGx1Z2luLXNpbXVsYXRpb24vc3JjL2NyZWF0ZUNvbW1hbmQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnRlcmFjdGl2ZUNMSUFyZ3MgfSBmcm9tICdAbmVvLW9uZS9zZXJ2ZXItcGx1Z2luJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBDb3VsZE5vdExvYWRTaW11bGF0aW9uRXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5pbXBvcnQgeyBTaW11bGF0aW9uQ29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IHJlcXVpcmVSZXNvbHZlID0gKHBrZzogc3RyaW5nLCByZXF1aXJlUGF0aDogc3RyaW5nKSA9PiBwYXRoLnJlc29sdmUocmVxdWlyZS5yZXNvbHZlKHBrZyksIHJlcXVpcmVQYXRoKTtcblxuY29uc3Qgc2V0dXBTaW11bGF0aW9uID0gYXN5bmMgKHBrZzogc3RyaW5nLCBkaXJOYW1lOiBzdHJpbmcsIGNvbmZpZzogU2ltdWxhdGlvbkNvbmZpZykgPT4ge1xuICBjb25zdCBzaW11bGF0aW9uUGF0aCA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBkaXJOYW1lKTtcbiAgYXdhaXQgZnMuZW5zdXJlRGlyKHNpbXVsYXRpb25QYXRoKTtcbiAgYXdhaXQgZnMuY29weShyZXF1aXJlUmVzb2x2ZShwa2csIGNvbmZpZy50ZW1wbGF0ZURpciksIHNpbXVsYXRpb25QYXRoKTtcbn07XG5cbmNvbnN0IHRyeVJlcXVpcmVTaW11bGF0aW9uID0gKHBrZzogc3RyaW5nKTogU2ltdWxhdGlvbkNvbmZpZyA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgY29uZmlnID0gcmVxdWlyZShwa2cpO1xuXG4gICAgcmV0dXJuIGNvbmZpZyAhPSB1bmRlZmluZWQgJiYgY29uZmlnLmRlZmF1bHQgIT0gdW5kZWZpbmVkID8gY29uZmlnLmRlZmF1bHQgOiBjb25maWc7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBDb3VsZE5vdExvYWRTaW11bGF0aW9uRXJyb3IocGtnKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNvbW1hbmQgPSAoeyBjbGkgfTogSW50ZXJhY3RpdmVDTElBcmdzKSA9PlxuICBjbGkudm9ycGFsXG4gICAgLmNvbW1hbmQoJ2NyZWF0ZSBzaW11bGF0aW9uIDxkaXJOYW1lPiA8c2ltdWxhdGlvbj4nLCAnQ3JlYXRlIGEgTkVP4oCiT05FIHNpbXVsYXRpb24uJylcbiAgICAuYWN0aW9uKGFzeW5jIChhcmdzKSA9PiB7XG4gICAgICBjb25zdCBkaXJOYW1lID0gYXJncy5kaXJOYW1lO1xuICAgICAgY29uc3QgcGtnID0gYXJncy5zaW11bGF0aW9uO1xuICAgICAgY2xpLnByaW50KCdMb2FkaW5nIHNpbXVsYXRpb24gcGFja2FnZS4uLicpO1xuICAgICAgY29uc3QgY29uZmlnID0gdHJ5UmVxdWlyZVNpbXVsYXRpb24ocGtnKTtcbiAgICAgIGNsaS5wcmludCgnU2V0dGluZyB1cCBzaW11bGF0aW9uLi4uJyk7XG4gICAgICBhd2FpdCBzZXR1cFNpbXVsYXRpb24ocGtnLCBkaXJOYW1lLCBjb25maWcpO1xuICAgICAgY2xpLnByaW50KGBDcmVhdGVkIHNpbXVsYXRpb24gaW4gJHtkaXJOYW1lfS5gKTtcbiAgICB9KTtcbiJdfQ==