diff options
Diffstat (limited to 'deps/npm/lib/utils/otplease.js')
-rw-r--r-- | deps/npm/lib/utils/otplease.js | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/deps/npm/lib/utils/otplease.js b/deps/npm/lib/utils/otplease.js new file mode 100644 index 0000000000..d0477a896d --- /dev/null +++ b/deps/npm/lib/utils/otplease.js @@ -0,0 +1,27 @@ +'use strict' + +const BB = require('bluebird') + +const optCheck = require('figgy-pudding')({ + prompt: {default: 'This operation requires a one-time password.\nEnter OTP:'}, + otp: {} +}) +const readUserInfo = require('./read-user-info.js') + +module.exports = otplease +function otplease (opts, fn) { + opts = opts.concat ? opts : optCheck(opts) + return BB.try(() => { + return fn(opts) + }).catch(err => { + if (err.code !== 'EOTP' && !(err.code === 'E401' && /one-time pass/.test(err.body))) { + throw err + } else if (!process.stdin.isTTY || !process.stdout.isTTY) { + throw err + } else { + return readUserInfo.otp( + optCheck(opts).prompt + ).then(otp => fn(opts.concat({otp}))) + } + }) +} |