Spaces:
Running
Running
var uri = "https://raw.githubusercontent.com/GiaKhang1810/mira-bot-v1/main/"; | |
var axios = require("axios"); | |
var path = require("path"); | |
var fs = require("fs"); | |
var dir = path.resolve(__dirname, "..") + "/"; | |
var log = require("./lib/log"); | |
var { execSync } = require("child_process"); | |
var changelog; | |
function getExtension(param) { | |
var ext = path.extname(param).toLowerCase().split(".").pop(); | |
switch (ext) { | |
case "json": | |
return "json"; | |
case "js": | |
case "css": | |
case "ejs": | |
return "text"; | |
default: | |
return "binary"; | |
} | |
} | |
async function readChangelog() { | |
var res = await axios.get(uri + "/changelog.json"); | |
changelog = res.data; | |
fs.writeFileSync(dir + "/changelog.json", JSON.stringify(changelog, null, 4)); | |
changelog = changelog[Object.keys(changelog).pop()]; | |
return; | |
} | |
async function Writer() { | |
for (var param in changelog) { | |
var ext = getExtension(param); | |
var url = uri + param; | |
var res = await axios.get(url, { responseType: ext === "binary" ? "arraybuffer" : "text" }); | |
var data; | |
var pathWrite = path.resolve(dir, param); | |
var Dir = path.dirname(pathWrite); | |
if (!fs.existsSync(Dir)) | |
fs.mkdirSync(Dir, { recursive: true }); | |
switch (ext) { | |
case "json": | |
data = JSON.stringify(JSON.parse(res.data), null, 4); | |
break; | |
case "text": | |
data = res.data; | |
break; | |
default: | |
data = Buffer.from(res.data, "utf-8"); | |
break; | |
} | |
fs.writeFileSync(pathWrite, data); | |
} | |
return; | |
} | |
async function finishedUpdate() { | |
var url = uri + "package.json"; | |
var res = await axios.get(url); | |
var data = JSON.stringify(res.data, null, 4); | |
var pathWrite = path.resolve(dir, "package.json"); | |
fs.writeFileSync(pathWrite, data); | |
execSync("npm install", { | |
cwd: __dirname, | |
stdio: "inherit", | |
shell: true | |
}); | |
return; | |
} | |
(async () => { | |
try { | |
await readChangelog(); | |
await Writer(); | |
await finishedUpdate(); | |
process.exit(2); | |
} catch (error) { | |
log.error("updater.error", error.message); | |
console.log(error); | |
return process.exit(1); | |
} | |
})(); | |