@neo-one/server-plugin-simulation-esnext-esm
Version:
NEO•ONE Server simulation plugin.
32 lines (30 loc) • 5.17 kB
JavaScript
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=