UNPKG

@copperjs/copper

Version:
78 lines 2.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); require("make-promises-safe"); const fs = require("fs"); const yargs = require("yargs"); const helpers_1 = require("yargs/helpers"); const logger_1 = require("./logger"); const server_1 = require("./standalone/server"); const server_2 = require("./grid/server"); const server_3 = require("./node/server"); const config_1 = require("./standalone/config"); const config_2 = require("./node/config"); const config_3 = require("./grid/config"); // eslint-disable-next-line @typescript-eslint/no-var-requires const { version } = require('../package.json'); const args = yargs(helpers_1.hideBin(process.argv)) .command('standalone', 'start a Copper standalone server') .command('hub', 'start a Copper hub') .command('node', 'start a Copper node') .option('port', { describe: "Copper's port", default: 9115, }) .option('version', { alias: 'v', describe: 'print version', type: 'boolean', }) .option('config', { alias: 'c', describe: 'configuration json file', type: 'string', }) .option('silent', { type: 'boolean', }) .parseSync(); const parseJsonFile = (config) => { try { return config ? JSON.parse(fs.readFileSync(config, 'utf-8')) : {}; } catch (err) { throw new Error('configuration is invalid'); } }; const ServerFactory = { standalone: server_1.StandaloneServer, node: server_3.NodeServer, hub: server_2.HubServer }; const configStores = [config_1.copperConfig, config_2.nodeConfig, config_3.gridConfig]; (async () => { console.log(`Copper version ${version}`); if (args.version) { return; } const mode = args._[0] || 'standalone'; if (!ServerFactory[mode]) { console.error(`unknown command ${mode}. run copper --help for more information`); return; } try { const config = parseJsonFile(args.config); config.port = config.port || args.port; configStores.forEach((store) => { store.value = config; }); if (args.silent) { logger_1.logger.level = 'silent'; } const server = new ServerFactory[mode]({ port: config.port, logLevel: args.silent ? 'silent' : 'info', }); await server.listen(); logger_1.logger.info(`Copper ${mode} up and listening on port ${config.port}`); } catch (e) { logger_1.logger.error(e); } })(); //# sourceMappingURL=index.js.map