UNPKG

@dicy/server

Version:

JSON-RPC server for DiCy.

58 lines (57 loc) 1.6 kB
#!/usr/bin/env node "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const core_1 = require("@dicy/core"); const rpc = require("vscode-jsonrpc"); const yargs = require("yargs"); const Server_1 = require("./Server"); const argv = yargs .usage(`JSON-RPC server for DiCy Usage: dicy-server --node-ipc or: dicy-server --pipe=<name> or: dicy-server --socket=<port> or: dicy-server --stdio`) .option('node-ipc', { conflicts: ['socket', 'stdio', 'pipe'], describe: 'use node-ipc', default: undefined, type: 'boolean' }) .option('pipe', { conflicts: ['nodeIpc', 'stdio', 'socket'], describe: 'use named pipe. example: --pipe=foo', type: 'string' }) .option('socket', { conflicts: ['nodeIpc', 'stdio', 'pipe'], describe: 'use socket. example: --socket=5000', type: 'number' }) .option('stdio', { conflicts: ['socket', 'nodeIpc', 'pipe'], describe: 'use stdio', default: undefined, type: 'boolean' }) .help() .argv; let transport; if (argv.stdio) { transport = [new rpc.StreamMessageReader(process.stdin), new rpc.StreamMessageWriter(process.stdout)]; } else if (argv.nodeIpc) { transport = [new rpc.IPCMessageReader(process), new rpc.IPCMessageWriter(process)]; } else if (argv.port) { transport = rpc.createServerSocketTransport(argv.port); } else if (argv.pipe) { transport = rpc.createServerPipeTransport(argv.pipe); } else { yargs.showHelp(); } if (transport) { const server = new Server_1.default(transport, new core_1.DiCy()); server.start(); }