blob: 1b0e132e3f882337baa408917ca6a15c026a7d91 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
const fs = require('fs');
const path = require('path');
const chalk = require(__dirname + '/../../MistyCore/node_modules/chalk');
const child_process = require("child_process");
const semver = require(__dirname + '/../../MistyCore/node_modules/semver');
function prettyVersion(version) {
return version.replace(/^\*$/gm, "<all versions>").replace(/^>=(| *)(\d+\.\d+\.\d+)$/gm, "$2 and later").replace(/^=(| *)(\d+\.\d+\.\d+)$/gm, "$2").replace(/^(\d+\.\d+\.\d+)(| +)-(| +)(\d+\.\d+\.\d+)$/gm, "$1 to $4");
}
module.exports = (arguments) => {
if (arguments['_finals'].length === 0) {
console.log(chalk.bgYellow.white("<!>") + " " + chalk.yellow("Missing operand"));
return;
}
let input = arguments['_finals'][0];
let command = null;
let commands = global.commands;
let commandsMetadata = global.commandsMetadata;
for (let cmd of commands) {
if (cmd.toLowerCase() === input.toLowerCase()) {
command = cmd;
break;
}
let metadata = commandsMetadata[commands.indexOf(cmd)];
if (metadata['aliases'].map(i => i.toLowerCase()).includes(input.toLowerCase())) {
command = cmd;
break;
}
}
let metadata = commandsMetadata[commands.indexOf(command)];
if (!command) {
console.log(chalk.bgRed.white("<!>") + " " + chalk.red("Command not found: ") + input);
} else {
let out = chalk.reset("") + "\n";
let pack = "*";
out += chalk.red(" ╔" + "═".repeat(command.length + 2) + "╗\n ║ " + command + " ║\n " + "╚" + "═".repeat(command.length + 2) + "╝") + "\n\n";
out += chalk.magenta(" Name\n ----") + "\n";
out += chalk.whiteBright(" " + command + " - " + metadata.description) + "\n\n";
out += chalk.magenta(" Synopsis\n --------") + "\n";
out += chalk.whiteBright(" " + chalk.green(command));
for (let param of metadata['manual']['parameters']) {
out += " ";
if (!param.required) out += "[";
if (param.value) {
out += chalk.cyan("-" + param.name) + chalk.magenta(chalk.bgGray("=") + param.value);
} else {
out += chalk.magenta("-" + param.name);
}
if (!param.required) out += "]";
}
if (metadata['manual']['final']) {
out += " ";
if (!metadata['manual']['final'].required) out += "[";
if (metadata['manual']['final']['command']) {
out += chalk.yellow(metadata['manual']['final'].name);
} else {
out += metadata['manual']['final'].name;
}
if (metadata['manual']['final'].multiple) out += " ...";
if (!metadata['manual']['final'].required) out += "]";
}
out += "\n";
for (let alias of metadata.aliases) {
out += chalk.whiteBright(" " + chalk.green(alias) + chalk.gray(" (-> " + command + ")") + "\n");
}
if (metadata['manual']['summary'] || metadata['manual']['parameters'].length > 0) {
out += chalk.magenta("\n Description\n -----------") + "\n";
if (metadata['manual']['summary']) {
out += " " + metadata['manual']['summary'].trim();
for (let param of metadata['manual']['parameters']) {
out += "\n\n ";
if (param.value) {
out += chalk.cyan("-" + param.name) + chalk.magenta(chalk.bgGray("=") + param.value);
} else {
out += chalk.magenta("-" + param.name);
}
out += "\n " + param.description ?? "<no description>";
}
if (metadata['manual']['final']) {
out += "\n\n ";
if (metadata['manual']['final']['command']) {
out += chalk.yellow(metadata['manual']['final'].name);
} else {
out += metadata['manual']['final'].name;
}
if (metadata['manual']['final'].multiple) out += " ...";
out += "\n " + metadata['manual']['final'].description ?? "<no description>";
}
}
}
if (metadata['manual']['examples']) {
out += chalk.magenta("\n\n Examples\n --------") + "\n";
for (let example of metadata['manual']['examples']) {
out += " " + example.description + "\n " + chalk.blue("> ") + example.command + "\n";
}
}
out += chalk.magenta("\n\n Compatibility\n -------------") + "\n";
out += " MistyOS: " + prettyVersion(metadata['manual']['compatibility']['mistyos']) + "\n";
out += " Kernel: " + prettyVersion(metadata['manual']['compatibility']['kernel']);
console.log("\n" + out.trim() + "\n");
}
}
|