UNPKG

@neo-one/server-plugin-simulation-esnext-esm

Version:

NEO•ONE Server simulation plugin.

32 lines (30 loc) 5.17 kB
import * as fs from 'fs-extra'; import * as path from 'path'; import { CouldNotLoadSimulationError } from './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 { throw new CouldNotLoadSimulationError(pkg); } }; export const 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNyZWF0ZUNvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDL0IsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR3ZELE1BQU0sY0FBYyxHQUFHLENBQUMsR0FBVyxFQUFFLFdBQW1CLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUU3RyxNQUFNLGVBQWUsR0FBRyxLQUFLLEVBQUUsR0FBVyxFQUFFLE9BQWUsRUFBRSxNQUF3QixFQUFFLEVBQUU7SUFDdkYsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUQsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ25DLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztBQUN6RSxDQUFDLENBQUM7QUFFRixNQUFNLG9CQUFvQixHQUFHLENBQUMsR0FBVyxFQUFvQixFQUFFO0lBQzdELElBQUk7UUFDRixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFNUIsT0FBTyxNQUFNLElBQUksU0FBUyxJQUFJLE1BQU0sQ0FBQyxPQUFPLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7S0FDckY7SUFBQyxNQUFNO1FBQ04sTUFBTSxJQUFJLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQzVDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQXNCLEVBQUUsRUFBRSxDQUMzRCxHQUFHLENBQUMsTUFBTTtLQUNQLE9BQU8sQ0FBQywwQ0FBMEMsRUFBRSw4QkFBOEIsQ0FBQztLQUNuRixNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO0lBQ3JCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDN0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUM1QixHQUFHLENBQUMsS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFDM0MsTUFBTSxNQUFNLEdBQUcsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsR0FBRyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sZUFBZSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUMsR0FBRyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsT0FBTyxHQUFHLENBQUMsQ0FBQztBQUNqRCxDQUFDLENBQUMsQ0FBQyIsImZpbGUiOiJuZW8tb25lLXNlcnZlci1wbHVnaW4tc2ltdWxhdGlvbi9zcmMvY3JlYXRlQ29tbWFuZC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludGVyYWN0aXZlQ0xJQXJncyB9IGZyb20gJ0BuZW8tb25lL3NlcnZlci1wbHVnaW4tZXNuZXh0LWVzbSc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgQ291bGROb3RMb2FkU2ltdWxhdGlvbkVycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgU2ltdWxhdGlvbkNvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCByZXF1aXJlUmVzb2x2ZSA9IChwa2c6IHN0cmluZywgcmVxdWlyZVBhdGg6IHN0cmluZykgPT4gcGF0aC5yZXNvbHZlKHJlcXVpcmUucmVzb2x2ZShwa2cpLCByZXF1aXJlUGF0aCk7XG5cbmNvbnN0IHNldHVwU2ltdWxhdGlvbiA9IGFzeW5jIChwa2c6IHN0cmluZywgZGlyTmFtZTogc3RyaW5nLCBjb25maWc6IFNpbXVsYXRpb25Db25maWcpID0+IHtcbiAgY29uc3Qgc2ltdWxhdGlvblBhdGggPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgZGlyTmFtZSk7XG4gIGF3YWl0IGZzLmVuc3VyZURpcihzaW11bGF0aW9uUGF0aCk7XG4gIGF3YWl0IGZzLmNvcHkocmVxdWlyZVJlc29sdmUocGtnLCBjb25maWcudGVtcGxhdGVEaXIpLCBzaW11bGF0aW9uUGF0aCk7XG59O1xuXG5jb25zdCB0cnlSZXF1aXJlU2ltdWxhdGlvbiA9IChwa2c6IHN0cmluZyk6IFNpbXVsYXRpb25Db25maWcgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHJlcXVpcmUocGtnKTtcblxuICAgIHJldHVybiBjb25maWcgIT0gdW5kZWZpbmVkICYmIGNvbmZpZy5kZWZhdWx0ICE9IHVuZGVmaW5lZCA/IGNvbmZpZy5kZWZhdWx0IDogY29uZmlnO1xuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgQ291bGROb3RMb2FkU2ltdWxhdGlvbkVycm9yKHBrZyk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDb21tYW5kID0gKHsgY2xpIH06IEludGVyYWN0aXZlQ0xJQXJncykgPT5cbiAgY2xpLnZvcnBhbFxuICAgIC5jb21tYW5kKCdjcmVhdGUgc2ltdWxhdGlvbiA8ZGlyTmFtZT4gPHNpbXVsYXRpb24+JywgJ0NyZWF0ZSBhIE5FT+KAok9ORSBzaW11bGF0aW9uLicpXG4gICAgLmFjdGlvbihhc3luYyAoYXJncykgPT4ge1xuICAgICAgY29uc3QgZGlyTmFtZSA9IGFyZ3MuZGlyTmFtZTtcbiAgICAgIGNvbnN0IHBrZyA9IGFyZ3Muc2ltdWxhdGlvbjtcbiAgICAgIGNsaS5wcmludCgnTG9hZGluZyBzaW11bGF0aW9uIHBhY2thZ2UuLi4nKTtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHRyeVJlcXVpcmVTaW11bGF0aW9uKHBrZyk7XG4gICAgICBjbGkucHJpbnQoJ1NldHRpbmcgdXAgc2ltdWxhdGlvbi4uLicpO1xuICAgICAgYXdhaXQgc2V0dXBTaW11bGF0aW9uKHBrZywgZGlyTmFtZSwgY29uZmlnKTtcbiAgICAgIGNsaS5wcmludChgQ3JlYXRlZCBzaW11bGF0aW9uIGluICR7ZGlyTmFtZX0uYCk7XG4gICAgfSk7XG4iXX0=