1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const ts_node_1 = require("@oclif/config/lib/ts-node");
|
4 | const lodashTemplate = require("lodash.template");
|
5 | function 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 | }
|
11 | exports.uniqBy = uniqBy;
|
12 | function compact(a) {
|
13 | return a.filter((a) => Boolean(a));
|
14 | }
|
15 | exports.compact = compact;
|
16 | function castArray(input) {
|
17 | if (input === undefined)
|
18 | return [];
|
19 | return Array.isArray(input) ? input : [input];
|
20 | }
|
21 | exports.castArray = castArray;
|
22 | function 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 | }
|
42 | exports.sortBy = sortBy;
|
43 | function template(context) {
|
44 | function render(t) {
|
45 | return lodashTemplate(t)(context);
|
46 | }
|
47 | return render;
|
48 | }
|
49 | exports.template = template;
|
50 | function extractExport(config, classPath) {
|
51 | const helpClassPath = ts_node_1.tsPath(config.root, classPath);
|
52 | return require(helpClassPath);
|
53 | }
|
54 | function extractClass(exported) {
|
55 | return exported && exported.default ? exported.default : exported;
|
56 | }
|
57 | function 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 | }
|
78 | exports.getHelpClass = getHelpClass;
|