Vorpal - как выполнить команду с подсказкой

1

В настоящее время я использую стороннее приложение, использующее Vorpal в режиме REPL. Я пытаюсь автоматизировать некоторые конфигурации развертывания для использования в моем проекте с помощью функции exec в Vorpal. Все работает, пока не появится подсказка. В этот момент мое выполнение зависает, и я не могу прогрессировать, пока не сделаю некоторые шаги вручную (это не то, что я хочу).

Я посмотрел на документы, но нет никаких упоминаний об этом. Я хотел бы избежать необходимости менять уже существующий код в глубину, но я сделаю это, если потребуется использовать параметры.

Вот пример моего кода: https://gist.github.com/gretro/b67aa364967c3fa2c82279b7e4236c2e

Есть ли что-то, что я пропустил, или трюк, который можно использовать, чтобы делать то, что мне нужно?

  • 0
    Какую версию узла вы используете? Недавно была исправлена ошибка readline (в узле v8.x), которая вызывала аналогичную проблему для npm.
  • 0
    Я использую Node 6.9.5. Я попробую обновить, хотя стороннее приложение использует Node 6.5.0 в образе Docker.
Показать ещё 1 комментарий
Теги:
vorpal.js

1 ответ

0

Код, приведенный ниже, может помочь, команда 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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню