Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hitting CTRL+C while in Inquirer prompt breaks everything #42

Open
scotthovestadt opened this issue Nov 1, 2015 · 16 comments
Open

Hitting CTRL+C while in Inquirer prompt breaks everything #42

scotthovestadt opened this issue Nov 1, 2015 · 16 comments

Comments

@scotthovestadt
Copy link
Contributor

The output looks like this:

(^C again to quit)
function (str) {
  if (str === undefined) {
    return this._delimiter;
  }
  this._delimiter = String(str).trim() + ' ';
  if (this.isLocal()) {
    this.parent.ui.refresh();
  } else {
    this.parent._send('vantage-delimiter-downstream', 'downstream', {value: str, sessionId: this.id});
  }
  return this;
}
_

You can still type but nothing happens. Only way to recover is hitting CTRL+C again.

@dthree
Copy link
Owner

dthree commented Nov 2, 2015

Yikes! Okay will check out.

@dthree dthree added the bug label Nov 2, 2015
@hiteshbal91
Copy link

Hi Team,

Is above issue solved?

@scotthovestadt
Copy link
Contributor Author

Issue is still present.

@dthree
Copy link
Owner

dthree commented Dec 14, 2015

Hey Scott - sorry I haven't been very active recently. A lot of things are changing in life right now, so I haven't had too much time for OSS. Hope to get back fairly soon and close all these issues.

Otherwise, all your help's been very appreciated. I wouldn't mind adding you to the Vorpal team, if you're down with that.

@scotthovestadt
Copy link
Contributor Author

Don't worry about it; that's how open source is sometimes. You contribute
when you can, and mostly when you need it yourself. ;)

I would appreciate the abilities to accept pull requests and deploy code to
npm if possible.

@dthree
Copy link
Owner

dthree commented Dec 18, 2015

Okay Scott, giving you access now.

Feel free to make any patches you need, obviously add tests as you go. Just check with me before committing anything that alters the API, or any breaking changes.

Thanks for all your help!

@dthree
Copy link
Owner

dthree commented Dec 24, 2015

Okay this should be good now. Can you please try it? v1.5.2

@scotthovestadt
Copy link
Contributor Author

No luck.

C17PR768G8WP:cli shovestadt$ cli
cli:
function (str) {
  if (str === undefined) {
    return this._delimiter;
  }
  this._delimiter = String(str).trim() + ' ';
  if (this.isLocal()) {
    this.parent.ui.refresh();
  } else {
    this.parent._send('vantage-delimiter-downstream', 'downstream', {value: str, sessionId: this.id});
  }
  return this;
}
function (str) {
  if (str === undefined) {
    return this._delimiter;
  }
  this._delimiter = String(str).trim() + ' ';
  if (this.isLocal()) {
    this.parent.ui.refresh();
  } else {
    this.parent._send('vantage-delimiter-downstream', 'downstream', {value: str, sessionId: this.id});
  }
  return this;
Username: test
Password:

^C/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:75
    throw e;
    ^

TypeError: Cannot read property 'removeListener' of null
    at [object Object].UI.close (/usr/local/lib/node_modules/cli/node_modules/inquirer/lib/ui/baseUI.js:45:10)
    at [object Object].PromptUI.onCompletion (/usr/local/lib/node_modules/cli/node_modules/inquirer/lib/ui/prompt.js:54:8)
    at AnonymousObserver.Rx.AnonymousObserver.AnonymousObserver.completed (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:1550:12)
    at AnonymousObserver.Rx.internals.AbstractObserver.AbstractObserver.onCompleted (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:1489:14)
    at Subject.Rx.Subject.addProperties.onCompleted (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:5871:19)
    at Subject.tryCatcher (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:63:31)
    at AutoDetachObserverPrototype.completed (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:5796:56)
    at AutoDetachObserver.Rx.internals.AbstractObserver.AbstractObserver.onCompleted (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:1489:14)
    at AutoDetachObserver.tryCatcher (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:63:31)
    at AutoDetachObserverPrototype.completed (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:5796:56)
    at AutoDetachObserver.Rx.internals.AbstractObserver.AbstractObserver.onCompleted (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:1489:14)
    at InnerObserver.onCompleted (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:2966:65)
    at InnerObserver.tryCatcher (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:63:31)
    at AutoDetachObserverPrototype.completed (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:5796:56)
    at AutoDetachObserver.Rx.internals.AbstractObserver.AbstractObserver.onCompleted (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:1489:14)
    at AutoDetachObserver.tryCatcher (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:63:31)
@dthree
Copy link
Owner

dthree commented Dec 24, 2015

Can you show me the code with the inquirer prompt?

@dthree dthree reopened this Dec 24, 2015
@scotthovestadt
Copy link
Contributor Author

// Login command only available in CLI, requires user input.
vorpal
  .command('login [userKey] [userSecret]')
  .description('Set user key and user secret key.')
  .action(function(args, callback) {
    this.prompt([
      {
        type: 'input',
        name: 'userKey',
        message: 'User key: ',
        validate: (input) => {
          return input.length > 10;
        }
      },
      {
        type: 'input',
        name: 'userSecret',
        message: 'User secret key: ',
        validate: (input) => {
          return input.length > 20;
        }
      }
    ], (answers) => {
      self.userKey = self.commands.userKey = answers.userKey;
      self.userSecret = self.commands.userSecret = answers.userSecret;
      callback();
    });
  });
}
@dthree
Copy link
Owner

dthree commented Dec 24, 2015

Thanks. Checking it out.

@dthree
Copy link
Owner

dthree commented Dec 24, 2015

Oh - haha - it only breaks on multi-inputs. Looks like the Inquirer cancellation doesn't handle an array of inputs.

@dthree
Copy link
Owner

dthree commented Dec 24, 2015

Ugh. Cancelling inquirer prompts is literally the messiest part of my code, because Inquirer doesn't support command cancellation, so I have to hack it. This is going to take longer to fix.

@shayne
Copy link

shayne commented Feb 9, 2016

Running into this as well... where's the like button? 👍

@dthree
Copy link
Owner

dthree commented Feb 9, 2016

Got it. This one's... gnarly. Will try to work on it some more soon.

@joseph1125
Copy link

This problem still exists and breaks the REPL

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
5 participants