В настоящее время я использую стороннее приложение, использующее Vorpal в режиме REPL. Я пытаюсь автоматизировать некоторые конфигурации развертывания для использования в моем проекте с помощью функции exec
в Vorpal. Все работает, пока не появится подсказка. В этот момент мое выполнение зависает, и я не могу прогрессировать, пока не сделаю некоторые шаги вручную (это не то, что я хочу).
Я посмотрел на документы, но нет никаких упоминаний об этом. Я хотел бы избежать необходимости менять уже существующий код в глубину, но я сделаю это, если потребуется использовать параметры.
Вот пример моего кода: https://gist.github.com/gretro/b67aa364967c3fa2c82279b7e4236c2e
Есть ли что-то, что я пропустил, или трюк, который можно использовать, чтобы делать то, что мне нужно?
Код, приведенный ниже, может помочь, команда exec может быть использована для вызова команды vorpal с аргументами командной строки или без нее, и если без этого запрашиваются имя пользователя и пароль. Это то, чем вы были?
/*jshint esversion: 6 */
const vorpal = require('vorpal')();
vorpal
.delimiter('vorpal$')
.command('logon [uname] [pwd]', 'logs you on.')
.action(function(args, callback) {
var the_username = "";
var the_password = "";
if (args.uname !== undefined) {
the_username = args.uname;
the_password = args.pwd;
console.log("The username was: "+the_username);
console.log("The password was: "+the_password);
} else {
let questions = [
{
type: 'input',
name: 'username',
message: 'Enter username: '
},
{
type: 'password',
name: 'password',
message: 'Enter password: '
}
];
this.prompt(questions, function (answers){
the_username = answers.username;
the_password = answers.password;
console.log("The prompted username was: "+the_username);
console.log("The prompted password was: "+the_password);
});
}
});
vorpal.show();
// Uncomment the appropriate exec command, the one with arguments,
// or the one that prompts for the username/password.
// vorpal.exec('logon auser apassword');
vorpal.exec('logon');
Исполнение выглядит следующим образом:
vorpal$
The username was: auser
The password was: apassword
Или вот так:
vorpal$
Enter username: fdfss
Enter password: ******
The prompted username was: fdfss
The prompted password was: fdfsdf
readline
(в узле v8.x), которая вызывала аналогичную проблему для npm.