-
Notifications
You must be signed in to change notification settings - Fork 3
/
setup.js
153 lines (136 loc) · 5.43 KB
/
setup.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
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
(async () => {
/* console.log("–– Installation of prerequisites ...");
switch (process.platform) {
case "win32":
exec('npm install --vs2015 -g windows-build-tools', { stdio: [0, 1, 2] });
break;
case "linux":
console.log("–– Sorry, for the correct functioning on Linux, we need to install in administrator 'build-essential' (sudo apt-get install build-essential)");
exec('sudo apt-get install build-essential', { stdio: [0, 1, 2] });
break;
case "darwin":
console.log("–– Sorry, for the correct functioning on iOS, we need to install in administrator 'CommandLineTools (Xcode Cli)' (sudo rm -rf /Library/Developer/CommandLineTools & xcode-select --install). The installation window will open by itself, just follow the installation steps.");
exec('sudo rm -réf /Library/Developer/CommandLineTools xcode-select --install', { stdio: [0, 1, 2]});
break;
} */
console.log("–– Package installation ...");
require("child_process").execSync("npm install --save", {
stdio: [0, 1, 2]
});
console.clear();
// Beautiful color gradients in terminal output
const gradient = require("gradient-string"),
// Terminal string styling done right
chalk = require("chalk"),
// Lightweight, beautiful and user-friendly prompts
prompts = require("prompts"),
// File System
fs = require("fs"),
// Imports information from the .json package
pjson = require("./package.json");
var settings;
if (fs.existsSync("./settings.json")) {
fs.readFile("settings.json", "utf-8", function read(err, data) {
if (err) { throw err; }
settings = JSON.parse(data);
});
} else {
fs.writeFile("./settings.json", "{}", { flag: "wx" }, function (err) {
if (err) { throw err; }
});
}
var ASCIIHeader = [
"██╗░░░░░██╗░░░██╗███╗░░██╗░█████╗░",
"██║░░░░░██║░░░██║████╗░██║██╔══██╗",
"██║░░░░░██║░░░██║██╔██╗██║███████║",
"██║░░░░░██║░░░██║██║╚████║██╔══██║",
"███████╗╚██████╔╝██║░╚███║██║░░██║",
"╚══════╝░╚═════╝░╚═╝░░╚══╝╚═╝░░╚═╝"
].join("\n");
console.log([
// Print the header
chalk.bold(gradient("#8EA6DB", "#6A54C9")(ASCIIHeader)),
chalk.hex("#6A54C9").bold.italic("by Vio and ZeroTsu\n\n"),
`– ${chalk.hex("#6A54C9").bold(Object.keys(pjson.dependencies).length)} packages have been installed\n`
].join("\n"));
// Collecting information with prompt package
const questions = [
{
type: "text",
name: "token",
message: "Please enter the bot token from the application page\n",
initial: settings ? settings.Token : null,
validate: (value) => (value.length <= 58 ? "The bot token is needed" : true)
}, {
type: "number",
name: "ownerID",
message: "Now, enter the bot owner's User ID",
initial: settings ? settings.Master : null,
}, {
type: "text",
name: "prefix",
message: "Prefix",
initial: settings ? settings.Prefix : "$",
validate: (value) => (((/\s/).test(value)) ? "The prefix can't contain space" : true)
}, {
type: "text",
name: "richpresence",
message: "And what I'm doing ?",
initial: settings ? settings.RPres : null,
}, {
type: "select",
name: "richtype",
message: "Activity type",
choices: [
{
title: "Playing",
value: "PLAYING"
}, {
title: "Streaming",
value: "STREAMING"
}, {
title: "Listening",
value: "LISTENING"
}, {
title: "Watching",
value: "WATCHING"
}, {
title: "Having Fun",
value: "Pegging Vio"
}
]
}, {
type: (prev) => (prev === "STREAMING" ? "text" : null),
name: "richurl",
message: "Streaming URL (Twitch only)",
initial: settings ? settings.RUrl : null,
}
];
const onCancel = () => {
console.log("\n😢 Git ur ass back here Vio! ");
process.exit;
};
const response = await prompts(questions, {
onCancel
});
const set = {
Token: response.token,
Master: response.ownerID,
Prefix: response.prefix,
RPres: response.richpresence,
RType: response.richtype,
RUrl: response.richurl
};
// If it doesn't exist, create an '.env' file, and include collected information.
fs.writeFile("./settings.json", JSON.stringify(set, null, "\t"), (err) => {
if (err) { throw err; }
console.log([
"\n\n🔥 ALL IS DONE ^^ !\n",
"The setup is complete, you can now, if not already done,",
"inv me,",
"\n",
chalk.italic("Bruh, u need to improve me lol\n"),
chalk`Type {italic.grey node Luna.js} to start the bot`
].join("\n"));
});
})();