@ton-actions/tondev-contest
Version:
TON Dev Environment
155 lines • 5.57 kB
JavaScript
;
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