UNPKG

1.76 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const inquirer_1 = require("inquirer");
4const validator_1 = require("validator");
5const api_1 = require("./api");
6async function disambiguate(heroku, pipelineIDOrName) {
7 let pipeline;
8 if (validator_1.isUUID(pipelineIDOrName)) {
9 const result = (await api_1.getPipeline(heroku, pipelineIDOrName));
10 pipeline = result.body;
11 }
12 else {
13 const { body: pipelines } = await api_1.findPipelineByName(heroku, pipelineIDOrName);
14 if (pipelines.length === 0) {
15 throw new Error('Pipeline not found');
16 }
17 else if (pipelines.length === 1) {
18 pipeline = pipelines[0];
19 }
20 else {
21 // Disambiguate
22 const choices = pipelines.map(x => {
23 return {
24 name: new Date(x.created_at).toString(),
25 value: x,
26 };
27 });
28 const questions = [{
29 type: 'list',
30 name: 'pipeline',
31 message: `Which ${pipelineIDOrName} pipeline?`,
32 choices,
33 }];
34 // eslint-disable-next-line no-async-promise-executor
35 pipeline = await new Promise(async function (resolve, reject) {
36 const answers = await inquirer_1.prompt(questions);
37 if (answers.pipeline) {
38 resolve(answers.pipeline);
39 }
40 else {
41 // eslint-disable-next-line prefer-promise-reject-errors
42 reject('Must pick a pipeline');
43 }
44 });
45 }
46 }
47 return pipeline;
48}
49exports.default = disambiguate;