UNPKG

@ton-actions/tondev-contest

Version:

TON Dev Environment

155 lines 5.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.seSetCommand = exports.seUpdateCommand = exports.seResetCommand = exports.seStopCommand = exports.seStartCommand = exports.seVersionCommand = exports.seInfoCommand = exports.instanceArg = void 0; const installer_1 = require("./installer"); const docker_1 = require("./docker"); const utils_1 = require("../../core/utils"); exports.instanceArg = { isArg: true, name: "instance", type: "string", defaultValue: "*", title: "SE Instance Filter", }; async function controlInstances(instanceFilter, control) { const defs = (await installer_1.filterConfigInstances(instanceFilter)).map(installer_1.instanceContainerDef); await control(new docker_1.DevDocker(), defs); } exports.seInfoCommand = { name: "info", title: "Show SE Info", args: [exports.instanceArg], async run(terminal, args) { const docker = new docker_1.DevDocker(); const table = [[ "Instance", "State", "Version", "GraphQL Port", "ArangoDB Port", "Docker Container", "Docker Image", ]]; for (const instance of await installer_1.filterConfigInstances(args.instance)) { const info = await installer_1.getInstanceInfo(docker, instance); table.push([ instance.name, info.state, instance.version, instance.port, instance.dbPort, info.docker.container, info.docker.image, ]); } terminal.log(utils_1.formatTable(table, { headerSeparator: true })); }, }; exports.seVersionCommand = { name: "version", title: "Show SE Versions", async run(terminal, _args) { for (const instance of (await installer_1.getConfig()).instances) { terminal.log(`${instance.name}: ${instance.version}`); } terminal.log(`Available Versions: ${(await installer_1.getVersions()).join(", ")}`); }, }; exports.seStartCommand = { name: "start", title: "Start SE Instance", args: [exports.instanceArg], async run(terminal, args) { await controlInstances(args.instance, async (docker, defs) => { await docker.startupContainers(terminal, defs, docker_1.ContainerStatus.running); }); }, }; exports.seStopCommand = { name: "stop", title: "Stop SE Instance", args: [exports.instanceArg], async run(terminal, args) { await controlInstances(args.instance, async (docker, defs) => { await docker.shutdownContainers(terminal, defs, docker_1.ContainerStatus.created); }); }, }; exports.seResetCommand = { name: "reset", title: "Reset SE Instance", args: [exports.instanceArg], async run(terminal, args) { await controlInstances(args.instance, async (docker, defs) => { await docker.shutdownContainers(terminal, defs, docker_1.ContainerStatus.missing); await docker.startupContainers(terminal, defs, docker_1.ContainerStatus.running); }); }, }; exports.seUpdateCommand = { name: "update", title: "Update SE Instance Version", args: [exports.instanceArg], async run(terminal, args) { await installer_1.updateConfig(terminal, args.instance, { version: await installer_1.getLatestVersion(), }); }, }; exports.seSetCommand = { name: "set", title: "Update SE Instance Config", args: [exports.instanceArg, { name: "version", title: "SE version (version number or `latest`)", type: "string", defaultValue: "", }, { name: "port", title: "Port on localhost used to expose GraphQL API", type: "string", defaultValue: "", }, { name: "db-port", title: "Port on localhost used to expose ArangoDB API (number or `none`)", type: "string", defaultValue: "", } ], async run(terminal, args) { const updates = {}; if (args.version !== "") { if (args.version.toLowerCase() === "latest") { updates.version = await installer_1.getLatestVersion(); } else { if (!(await installer_1.getVersions()).includes(args.version)) { throw new Error(`Invalid version: ${args.version}`); } updates.version = args.version; } } if (args.port !== "") { updates.port = Number.parseInt(args.port); if (updates.port === undefined) { throw new Error(`Invalid port: ${args.port}`); } } if (args.dbPort !== "") { if (args.dbPort.toLowerCase() === "none") { updates.dbPort = installer_1.PORT_NONE; } else { updates.dbPort = Number.parseInt(args.dbPort); if (updates.dbPort === undefined) { throw new Error(`Invalid db-port: ${args.dbPort}`); } } } await installer_1.updateConfig(terminal, args.instance, updates); }, }; //# sourceMappingURL=commands.js.map