Skip to content

Commit

Permalink
utils: add otplease util for otp prompting
Browse files Browse the repository at this point in the history
  • Loading branch information
zkat committed Dec 10, 2018
1 parent 4cca9cb commit ad67461
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions lib/utils/otplease.js
Original file line number Diff line number Diff line change
@@ -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})))
}
})
}

0 comments on commit ad67461

Please # to comment.