diff options
Diffstat (limited to 'src/ipcMain/updater/git.ts')
| -rw-r--r-- | src/ipcMain/updater/git.ts | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/src/ipcMain/updater/git.ts b/src/ipcMain/updater/git.ts deleted file mode 100644 index 89c2d3c..0000000 --- a/src/ipcMain/updater/git.ts +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Vencord, a modification for Discord's desktop app - * Copyright (c) 2022 Vendicated and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <https://www.gnu.org/licenses/>. -*/ - -import IpcEvents from "@utils/IpcEvents"; -import { execFile as cpExecFile } from "child_process"; -import { ipcMain } from "electron"; -import { join } from "path"; -import { promisify } from "util"; - -import { calculateHashes, serializeErrors } from "./common"; - -const VENCORD_SRC_DIR = join(__dirname, ".."); - -const execFile = promisify(cpExecFile); - -const isFlatpak = process.platform === "linux" && Boolean(process.env.FLATPAK_ID?.includes("discordapp") || process.env.FLATPAK_ID?.includes("Discord")); - -if (process.platform === "darwin") process.env.PATH = `/usr/local/bin:${process.env.PATH}`; - -function git(...args: string[]) { - const opts = { cwd: VENCORD_SRC_DIR }; - - if (isFlatpak) return execFile("flatpak-spawn", ["--host", "git", ...args], opts); - else return execFile("git", args, opts); -} - -async function getRepo() { - const res = await git("remote", "get-url", "origin"); - return res.stdout.trim() - .replace(/git@(.+):/, "https://$1/") - .replace(/\.git$/, ""); -} - -async function calculateGitChanges() { - await git("fetch"); - - const res = await git("log", "HEAD...origin/main", "--pretty=format:%an/%h/%s"); - - const commits = res.stdout.trim(); - return commits ? commits.split("\n").map(line => { - const [author, hash, ...rest] = line.split("/"); - return { - hash, author, message: rest.join("/") - }; - }) : []; -} - -async function pull() { - const res = await git("pull"); - return res.stdout.includes("Fast-forward"); -} - -async function build() { - const opts = { cwd: VENCORD_SRC_DIR }; - - const command = isFlatpak ? "flatpak-spawn" : "node"; - const args = isFlatpak ? ["--host", "node", "scripts/build/build.mjs"] : ["scripts/build/build.mjs"]; - - const res = await execFile(command, args, opts); - - return !res.stderr.includes("Build failed"); -} - -ipcMain.handle(IpcEvents.GET_HASHES, serializeErrors(calculateHashes)); -ipcMain.handle(IpcEvents.GET_REPO, serializeErrors(getRepo)); -ipcMain.handle(IpcEvents.GET_UPDATES, serializeErrors(calculateGitChanges)); -ipcMain.handle(IpcEvents.UPDATE, serializeErrors(pull)); -ipcMain.handle(IpcEvents.BUILD, serializeErrors(build)); |
