98 lines
2.7 KiB
JavaScript
98 lines
2.7 KiB
JavaScript
'use strict';
|
|
|
|
const
|
|
https = require('https'),
|
|
fs = require('fs'),
|
|
eol = require('os').EOL,
|
|
platform = (process.platform !== "win32" && process.platform !== "darwin") ? "linux" : process.platform;
|
|
|
|
class Utils {
|
|
|
|
constructor() {
|
|
this.logs = "";
|
|
}
|
|
|
|
log(message) {
|
|
var d = new Date();
|
|
var ds = ("00" + (d.getDate() + 1)).slice(-2) + "/" +
|
|
("00" + d.getMonth()).slice(-2) + "/" +
|
|
d.getFullYear() + " " +
|
|
("00" + d.getHours()).slice(-2) + ":" +
|
|
("00" + d.getMinutes()).slice(-2) + ":" +
|
|
("00" + d.getSeconds()).slice(-2);
|
|
console.log(`[${ds}] ${message}`);
|
|
this.logs += `[${ds}] ${message}${eol}`;
|
|
this.saveLogs();
|
|
}
|
|
|
|
printLogs() {
|
|
console.log(this.logs);
|
|
}
|
|
|
|
saveLogs() {
|
|
fs.writeFileSync("logs.log", this.logs);
|
|
}
|
|
|
|
downloadResource(resource, callback, host) {
|
|
https.get({
|
|
host: host || "raw.githubusercontent.com",
|
|
path: resource,
|
|
headers: { 'user-agent': 'Mozilla/5.0' }
|
|
},
|
|
(response) => {
|
|
var data = "";
|
|
response.on("data", (chunk) => {
|
|
data += chunk;
|
|
});
|
|
response.on("end", () => {
|
|
callback(false, data);
|
|
});
|
|
response.on("error", (e) => {
|
|
callback(true, e);
|
|
});
|
|
}).on('error', (e) => {
|
|
callback(true, e);
|
|
});
|
|
}
|
|
|
|
installPath(lastKnownVersion) {
|
|
|
|
return {
|
|
"win32": () => {
|
|
var hver = lastKnownVersion;
|
|
var path = `${process.env.LOCALAPPDATA}/Discord/app-${lastKnownVersion}\\`;
|
|
fs.readdirSync(`${process.env.LOCALAPPDATA}/Discord/`).filter(function(file) {
|
|
var tpath = `${process.env.LOCALAPPDATA}/Discord/${file}`;
|
|
if(!fs.statSync(tpath).isDirectory()) return;
|
|
|
|
if(!file.startsWith("app-")) return;
|
|
var ver = file.replace("app-", "");
|
|
if(ver < hver) return;
|
|
hver = ver;
|
|
path = tpath;
|
|
});
|
|
return path;
|
|
},
|
|
"darwin": () => "/Applications/Discord.app/Contents",
|
|
"linux": () => "/usr/share/discord"
|
|
}[platform]();
|
|
|
|
}
|
|
|
|
libPath() {
|
|
return {
|
|
"win32": () => {
|
|
return `${process.env.APPDATA}/BetterDiscord/lib`;
|
|
},
|
|
"darwin": () => {
|
|
return `${process.env.HOME}/.local/share/BetterDiscord`;
|
|
},
|
|
"linux": () => {
|
|
// FIXME: for a non-root user, a path like OSX's makes more sense
|
|
return "/usr/local/share/BetterDiscord";
|
|
}
|
|
}[platform]();
|
|
}
|
|
}
|
|
|
|
module.exports = Utils; |