Skip to content

Commit

Permalink
Add support for Flatpak for Git updating (#274)
Browse files Browse the repository at this point in the history
Co-authored-by: Ven <[email protected]>
  • Loading branch information
A user and Vendicated committed Dec 2, 2022
1 parent 41dddc9 commit 62b2ace
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 10 deletions.
31 changes: 27 additions & 4 deletions scripts/patcher/install.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ const {
getDarwinDirs,
getLinuxDirs,
ENTRYPOINT,
question
} = require("./common");

switch (process.platform) {
Expand All @@ -62,15 +63,14 @@ async function install(installations) {
// Attempt to give flatpak perms
if (selected.isFlatpak) {
try {
const { branch } = selected;
const cwd = process.cwd();
const globalCmd = `flatpak override ${branch} --filesystem=${cwd}`;
const userCmd = `flatpak override --user ${branch} --filesystem=${cwd}`;
const globalCmd = `flatpak override ${selected.branch} --filesystem=${cwd}`;
const userCmd = `flatpak override --user ${selected.branch} --filesystem=${cwd}`;
const cmd = selected.location.startsWith("/home")
? userCmd
: globalCmd;
execSync(cmd);
console.log("Successfully gave write perms to Discord Flatpak.");
console.log("Gave write perms to Discord Flatpak.");
} catch (e) {
console.log("Failed to give write perms to Discord Flatpak.");
console.log(
Expand All @@ -79,6 +79,29 @@ async function install(installations) {
);
process.exit(1);
}

const answer = await question(
`Would you like to allow ${selected.branch} to talk to org.freedesktop.Flatpak?\n` +
"This is essentially full host access but necessary to spawn git. Without it, the updater will not work\n" +
"Consider using the http based updater (using the gui installer) instead if you want to maintain the sandbox.\n" +
"[y/N]: "
);

if (["y", "yes", "yeah"].includes(answer.toLowerCase())) {
try {
const globalCmd = `flatpak override ${selected.branch} --talk-name=org.freedesktop.Flatpak`;
const userCmd = `flatpak override --user ${selected.branch} --talk-name=org.freedesktop.Flatpak`;
const cmd = selected.location.startsWith("/home")
? userCmd
: globalCmd;
execSync(cmd);
console.log("Sucessfully gave talk permission");
} catch (err) {
console.error("Failed to give talk permission\n", err);
}
} else {
console.log(`Not giving full host access. If you change your mind later, you can run:\nflatpak override ${selected.branch} --talk-name=org.freedesktop.Flatpak`);
}
}

for (const version of selected.versions) {
Expand Down
19 changes: 13 additions & 6 deletions src/ipcMain/updater/git.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,13 @@ const VENCORD_SRC_DIR = join(__dirname, "..");

const execFile = promisify(cpExecFile);

const isFlatpak = Boolean(process.env.FLATPAK_ID?.includes("discordapp") || process.env.FLATPAK_ID?.includes("Discord"));

function git(...args: string[]) {
return execFile("git", args, {
cwd: VENCORD_SRC_DIR
});
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() {
Expand Down Expand Up @@ -61,9 +64,13 @@ async function pull() {
}

async function build() {
const res = await execFile("node", ["scripts/build/build.mjs"], {
cwd: VENCORD_SRC_DIR
});
const opts = { cwd: VENCORD_SRC_DIR };

let res;

if (isFlatpak) res = await execFile("flatpak-spawn", ["--host", "node", "scripts/build/build.mjs"], opts);
else res = await execFile("node", ["scripts/build/build.mjs"], opts);

return !res.stderr.includes("Build failed");
}

Expand Down

0 comments on commit 62b2ace

Please sign in to comment.