UNPKG

1.13 kBJavaScriptView Raw
1'use strict'
2
3let validator = require('validator')
4let inquirer = require('inquirer')
5let api = require('./api')
6
7function* disambiguate (heroku, pipelineIDOrName) {
8 var pipeline
9 if (validator.isUUID(pipelineIDOrName)) {
10 pipeline = yield api.getPipeline(heroku, pipelineIDOrName)
11 } else {
12 let pipelines = yield api.findPipelineByName(heroku, pipelineIDOrName)
13 if (pipelines.length === 0) {
14 throw new Error('Pipeline not found')
15 } else if (pipelines.length === 1) {
16 pipeline = pipelines[0]
17 } else {
18 // Disambiguate
19 let choices = pipelines.map(function (x) { return {name: new Date(x.created_at), value: x} })
20 let questions = [{
21 type: 'list',
22 name: 'pipeline',
23 message: `Which ${pipelineIDOrName} pipeline?`,
24 choices: choices
25 }]
26 pipeline = yield new Promise(function (resolve, reject) {
27 inquirer.prompt(questions, function (answers) {
28 if (answers.pipeline) resolve(answers.pipeline)
29 else reject('Must pick a pipeline')
30 })
31 })
32 }
33 }
34 return pipeline
35}
36
37module.exports = disambiguate