zcatalyst-cli
Version:
Command Line Tool for CATALYST
161 lines (160 loc) • 7.06 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const inquirer_1 = __importDefault(require("inquirer"));
const error_1 = __importDefault(require("../error"));
const runtime_store_1 = __importDefault(require("../runtime-store"));
const choice = (name, _a = {}) => {
var { id = name, value = name, short = name, disabled = false, checked = false } = _a, otherOpts = __rest(_a, ["id", "value", "short", "disabled", "checked"]);
return Object.assign({ id,
name,
value,
short,
disabled,
checked }, otherOpts);
};
const registeredTypes = new Map();
exports.default = {
register: (type) => __awaiter(void 0, void 0, void 0, function* () {
if (registeredTypes.has(type))
return;
let module;
switch (type) {
case 'file-path':
module = yield Promise.resolve().then(() => __importStar(require('./types/file-path')));
break;
case 'tree':
module = yield Promise.resolve().then(() => __importStar(require('./types/tree')));
break;
case 'search-box':
module = yield Promise.resolve().then(() => __importStar(require('./types/search-box')));
break;
case 'with-desc': {
module = yield Promise.resolve().then(() => __importStar(require('./types/with-description')));
break;
}
default:
throw new error_1.default('No such type registered', { exit: 2 });
}
inquirer_1.default.registerPrompt(type, module.default);
registeredTypes.set(type, module.default);
}),
deregister: (type) => {
registeredTypes.delete(type);
inquirer_1.default.restoreDefaultPrompts();
},
separator: (line) => {
return new inquirer_1.default.Separator(line);
},
choice,
ask: (...questions) => {
const runtimePrompt = runtime_store_1.default.get('prompt', false);
if (!runtimePrompt) {
for (const question of questions) {
if (question.type && ['file-path', 'tree', 'search-box'].includes(question.type)) {
if (!registeredTypes.has(question.type)) {
throw new error_1.default(`Prompt type "${question.type}" is not registered.`, {
exit: 2
});
}
}
}
return inquirer_1.default.prompt(questions);
}
return new Promise((res, rej) => {
try {
const answers = {};
questions.forEach((question) => {
var _a;
const runtimeAns = runtimePrompt[question.name];
if (runtimeAns !== undefined) {
switch (question.type) {
case 'checkbox': {
answers[question.name] = question.choices
.filter((choice) => choice.id &&
runtimeAns.includes(choice.id))
.map((filteredChoice) => filteredChoice.value);
break;
}
case 'list': {
answers[question.name] = (_a = question.choices.find((choice) => choice.id === runtimeAns.toString())) === null || _a === void 0 ? void 0 : _a.value;
break;
}
default: {
answers[question.name] = runtimeAns;
}
}
}
});
res(answers);
}
catch (err) {
rej(err);
}
});
},
question: (name, question, _a = {}) => {
var { type = 'input', defaultAns, choices = [], validate = () => {
return true;
}, filter = (ans) => {
return ans;
}, when = () => {
return true;
}, prefix = '', suffix = '' } = _a, otheropts = __rest(_a, ["type", "defaultAns", "choices", "validate", "filter", "when", "prefix", "suffix"]);
if (choices.length > 0 && typeof choices[0] === 'string') {
choices = choices.map((strChoice) => choice(strChoice));
}
return Object.assign({ type,
name, message: question, default: defaultAns, choices,
validate,
filter,
when,
prefix,
suffix }, otheropts);
}
};