UNPKG

@liara/cli

Version:

The command line interface for Liara

65 lines (64 loc) 2.36 kB
import ora from 'ora'; import inquirer from 'inquirer'; import Command from '../../base.js'; import { Flags } from '@oclif/core'; import { createDebugLogger } from '../../utils/output.js'; class Start extends Command { async run() { this.spinner = ora(); const { flags } = await this.parse(Start); const debug = createDebugLogger(flags.debug); await this.setGotConfig(flags); const account = await this.getCurrentAccount(); ((account && account.region === 'germany') || flags.region === 'germany') && this.error('We do not support germany any more.'); const hostname = flags.name || (await this.promptHostname()); try { const database = await this.getDatabaseByHostname(hostname); if (database === undefined) { this.log(`Database ${hostname} not found`); return; } const databaseID = database._id; await this.got.post(Start.PATH.replace('{database-id}', databaseID), { json: { scale: 1 }, }); this.log(`Database ${hostname} started.`); } catch (error) { debug(error.message); if (error.response && error.response.body) { debug(JSON.stringify(error.response.body)); } this.error(`Could not start the database. Please try again.`); } } async promptHostname() { const { name } = (await inquirer.prompt({ name: 'name', type: 'input', message: 'Enter name:', validate: (input) => input.length > 2, })); return name; } async getDatabaseByHostname(hostname) { const { databases } = await this.got('v1/databases').json(); if (!databases.length) { this.error(`Not found any database. Please open up https://console.liara.ir/databases and create the database, first.`); } const database = databases.find((database) => database.hostname === hostname); return database; } } Start.description = 'start a database'; Start.PATH = 'v1/databases/{database-id}/actions/scale'; Start.flags = { ...Command.flags, name: Flags.string({ char: 'n', description: 'name of your database', }), }; export default Start;