@copperjs/copper
Version:
A lightweight chromium grid
78 lines • 2.52 kB
JavaScript
;
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