UNPKG

2.56 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const ts_node_1 = require("@oclif/config/lib/ts-node");
4const lodashTemplate = require("lodash.template");
5function uniqBy(arr, fn) {
6 return arr.filter((a, i) => {
7 const aVal = fn(a);
8 return !arr.find((b, j) => j > i && fn(b) === aVal);
9 });
10}
11exports.uniqBy = uniqBy;
12function compact(a) {
13 return a.filter((a) => Boolean(a));
14}
15exports.compact = compact;
16function castArray(input) {
17 if (input === undefined)
18 return [];
19 return Array.isArray(input) ? input : [input];
20}
21exports.castArray = castArray;
22function sortBy(arr, fn) {
23 function compare(a, b) {
24 a = a === undefined ? 0 : a;
25 b = b === undefined ? 0 : b;
26 if (Array.isArray(a) && Array.isArray(b)) {
27 if (a.length === 0 && b.length === 0)
28 return 0;
29 const diff = compare(a[0], b[0]);
30 if (diff !== 0)
31 return diff;
32 return compare(a.slice(1), b.slice(1));
33 }
34 if (a < b)
35 return -1;
36 if (a > b)
37 return 1;
38 return 0;
39 }
40 return arr.sort((a, b) => compare(fn(a), fn(b)));
41}
42exports.sortBy = sortBy;
43function template(context) {
44 function render(t) {
45 return lodashTemplate(t)(context);
46 }
47 return render;
48}
49exports.template = template;
50function extractExport(config, classPath) {
51 const helpClassPath = ts_node_1.tsPath(config.root, classPath);
52 return require(helpClassPath);
53}
54function extractClass(exported) {
55 return exported && exported.default ? exported.default : exported;
56}
57function getHelpClass(config, defaultClass = '@oclif/plugin-help') {
58 const pjson = config.pjson;
59 const configuredClass = pjson && pjson.oclif && pjson.oclif.helpClass;
60 if (configuredClass) {
61 try {
62 const exported = extractExport(config, configuredClass);
63 return extractClass(exported);
64 }
65 catch (error) {
66 throw new Error(`Unable to load configured help class "${configuredClass}", failed with message:\n${error.message}`);
67 }
68 }
69 try {
70 const defaultModulePath = require.resolve(defaultClass, { paths: [config.root] });
71 const exported = require(defaultModulePath);
72 return extractClass(exported);
73 }
74 catch (error) {
75 throw new Error(`Could not load a help class, consider installing the @oclif/plugin-help package, failed with message:\n${error.message}`);
76 }
77}
78exports.getHelpClass = getHelpClass;