-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
executable file
·88 lines (73 loc) · 2.58 KB
/
index.js
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
#!/usr/bin/env node
const Help = require("./lib/script/help");
const Output = require("./lib/utils/output");
const Config = require("./lib/utils/config");
const FS = require("fs");
const Path = require("path");
const Clear = require("clear");
/**
* The Main Function
* @returns {Promise}
*/
async function main() {
let scriptName = process.argv[2];
const params = process.argv.slice(3);
const isSilent = params.includes("--silent");
if (!isSilent) {
Clear();
Output.logo("Runner");
}
const currentPath = process.cwd();
const basePath = Path.basename(currentPath);
if (!FS.existsSync(`${currentPath}/runner.json`)) {
Output.exit("You must have a runner.json file");
}
// Read the Scripts Data
const scriptFile = FS.readFileSync(Path.join(__dirname, "scripts.json"));
const scriptData = JSON.parse(scriptFile.toString());
// Read the Config Data
const configFile = FS.readFileSync(`${currentPath}/runner.json`);
let configData = {};
try {
configData = JSON.parse(configFile.toString());
} catch (e) {
Output.exit("The runner JSON is invalid");
}
// Show some help
if (!scriptName) {
Help(scriptData, configData);
return;
}
// Show the Version
if (scriptName === "-v") {
return Output.result(configData.version);
}
// Show the Version and Build
if (scriptName === "-vb") {
return Output.result(`${configData.version}-${configData.build}`);
}
// Show the Url
if (scriptName === "-url") {
return Output.result(configData.local);
}
// Try to get the correct script
const configScripts = configData.scripts;
if (!scriptData[scriptName]) {
if (configScripts.script && configScripts.script[scriptName]) {
params.unshift(scriptName);
scriptName = "script";
} else {
Output.exit(`The script "${scriptName}" does not exist`);
}
} else if (scriptData[scriptName].reqConfig && !configData[scriptName] && configScripts.script && configScripts.script[scriptName]) {
params.unshift(scriptName);
scriptName = "script";
}
// Execute the Command
Output.title(scriptData[scriptName].title, isSilent);
const { config, args, env } = await Config.parse(scriptName, scriptData, configData, params);
const scriptPath = Path.join(__dirname, "lib", "script", scriptName);
const response = await require(scriptPath)(config, args, env);
Output.done(!response || isSilent);
}
main();