mirror of
https://github.com/vvsviridov/enm-cli.git
synced 2025-10-23 08:22:21 +00:00
96 lines
2.2 KiB
JavaScript
Executable File
96 lines
2.2 KiB
JavaScript
Executable File
const inquirer = require('inquirer')
|
|
const chalk = require('chalk')
|
|
|
|
const logError = require('../../../util/logError')
|
|
const { isEmpty } = require('../../../util/validation')
|
|
|
|
|
|
inquirer.registerPrompt('autocomplete', require('inquirer-autocomplete-prompt'))
|
|
|
|
|
|
async function commandOther(prvn, command) {
|
|
const choosedIndex = prvn.choices.indexOf(command)
|
|
if (choosedIndex !== -1) {
|
|
if (prvn.nodes) {
|
|
prvn.nodeIndex = choosedIndex
|
|
prvn.getNode()
|
|
} else {
|
|
prvn.projectIndex = choosedIndex
|
|
await prvn.getProjectData()
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
async function handleCommand(prvn, command) {
|
|
const [, cmd] = command.match(/\[(\w+)\]/) || [, command]
|
|
switch (cmd) {
|
|
|
|
case 'exit':
|
|
prvn.prompt = ''
|
|
break
|
|
case 'new':
|
|
await prvn.newProject()
|
|
break
|
|
case 'back':
|
|
prvn.nodeIndex ? await prvn.getProjects() : await prvn.getProjectData()
|
|
break
|
|
case 'delete':
|
|
prvn.nodeIndex ? prvn.deleteNode() : await prvn.deleteProject()
|
|
break
|
|
|
|
case 'status':
|
|
await prvn.getNodeStatus()
|
|
break
|
|
case 'properties':
|
|
await prvn.getNodeProperties()
|
|
break
|
|
case 'bind':
|
|
await prvn.bindNode()
|
|
break
|
|
case 'cancel':
|
|
await prvn.cancelNode()
|
|
break
|
|
case 'resume':
|
|
await prvn.resumeNode()
|
|
break
|
|
case 'configurations':
|
|
await prvn.configurationsNode()
|
|
break
|
|
case 'siteinstall':
|
|
await prvn.siteinstallNode()
|
|
break
|
|
|
|
default:
|
|
await commandOther(prvn, command)
|
|
}
|
|
}
|
|
|
|
|
|
async function inputHandler() {
|
|
await this.getProjects()
|
|
while (true) {
|
|
try {
|
|
const input = await inquirer.prompt([
|
|
{
|
|
type: 'autocomplete',
|
|
name: 'command',
|
|
message: chalk.bold.blue(this.prompt),
|
|
pageSize: 10,
|
|
prefix: '',
|
|
suffix: chalk.bold.blue('>'),
|
|
validate: isEmpty,
|
|
source: async (answers, input) => await this.next(input),
|
|
emptyText: this.help,
|
|
}
|
|
])
|
|
await handleCommand(this, input.command)
|
|
if (!this.prompt) break
|
|
} catch (error) {
|
|
logError(error)
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
module.exports = inputHandler |