From e6fa30e155e083a7d2cf763cb52ce0ff87e83650 Mon Sep 17 00:00:00 2001 From: BluemediaDev Date: Sun, 2 Feb 2025 01:01:35 +0100 Subject: [PATCH] Use Discord canary deb instead of Flatpak --- host_vars/kronos | 2 +- main.yml | 2 +- roles/discord-canary/files/update-discord | 28 ++++++++++++++++++ roles/discord-canary/tasks/main.yml | 36 +++++++++++++++++++++++ roles/discord/tasks/main.yml | 5 ---- 5 files changed, 66 insertions(+), 7 deletions(-) create mode 100755 roles/discord-canary/files/update-discord create mode 100644 roles/discord-canary/tasks/main.yml delete mode 100644 roles/discord/tasks/main.yml diff --git a/host_vars/kronos b/host_vars/kronos index a09bb13..a0f89fe 100644 --- a/host_vars/kronos +++ b/host_vars/kronos @@ -37,7 +37,7 @@ workspaces: monitor: "Acer Technologies KG271U TATEE0048524" default: true layoutopt_orientation: "top" - on_created_empty: "flatpak run com.discordapp.Discord & keepassxc" + on_created_empty: "~/.local/bin/update-discord && discord-canary & keepassxc" - id: 9 monitor: "LG Electronics LG ULTRAGEAR 311NTVS8J911" diff --git a/main.yml b/main.yml index 8fa7835..45c00b8 100644 --- a/main.yml +++ b/main.yml @@ -10,4 +10,4 @@ #- vs-code #- qemu-kvm #- docker - #- discord + #- discord-canary diff --git a/roles/discord-canary/files/update-discord b/roles/discord-canary/files/update-discord new file mode 100755 index 0000000..1c34b1e --- /dev/null +++ b/roles/discord-canary/files/update-discord @@ -0,0 +1,28 @@ +#!/bin/bash + +set -eu + +SCRIPT_PATH=$(dirname "${BASH_SOURCE[0]}") +CACHE_FILE_PATH="$SCRIPT_PATH/.discord_version_cache" + +CURRENT_VERSION=$(curl -s "https://discord.com/api/updates/canary?platform=linux" | jq -r .name) +INSTALLED_VERSION="" + +if test -f "$CACHE_FILE_PATH"; then + INSTALLED_VERSION=$(head -n 1 "$CACHE_FILE_PATH") +fi + +if [ "$CURRENT_VERSION" != "$INSTALLED_VERSION" ]; then + echo "New version $CURRENT_VERSION found. Downloading..." + curl -Ls -o /tmp/discord-canary.deb "https://discord.com/api/download/canary?platform=linux&format=deb" + if [ ${1-default} != "--download-only" ]; then + pkexec apt install -y /tmp/discord-canary.deb + rm /tmp/discord-canary.deb + fi + echo $CURRENT_VERSION > $CACHE_FILE_PATH +else + echo "Current version is already installed." + if [ ${1-default} == "--download-only" ]; then + exit 2 + fi +fi diff --git a/roles/discord-canary/tasks/main.yml b/roles/discord-canary/tasks/main.yml new file mode 100644 index 0000000..4739d4f --- /dev/null +++ b/roles/discord-canary/tasks/main.yml @@ -0,0 +1,36 @@ +- name: Install pkexec + become: yes + apt: + state: latest + install_recommends: false + name: pkexec + +- name: Copy update helper + copy: + src: "{{ role_path }}/files/update-discord" + dest: "{{ ansible_env.HOME }}/.local/bin/" + +- name: Make update helper executable + ansible.builtin.file: + dest: "{{ ansible_env.HOME }}/.local/bin/update-discord" + mode: "ug+x" + +- name: Download Discord canary using helper + ansible.builtin.command: + cmd: "update-discord --download-only" + chdir: "{{ ansible_env.HOME }}/.local/bin" + register: helper_result + failed_when: ( helper_result.rc not in [ 0, 2 ] ) + +- name: Install Discord canary + become: yes + apt: + deb: /tmp/discord-canary.deb + install_recommends: false + when: helper_result.rc != 2 + +- name: Remove installation package + ansible.builtin.file: + state: absent + path: /tmp/discord-canary.deb + when: helper_result.rc != 2 diff --git a/roles/discord/tasks/main.yml b/roles/discord/tasks/main.yml deleted file mode 100644 index 3aa94db..0000000 --- a/roles/discord/tasks/main.yml +++ /dev/null @@ -1,5 +0,0 @@ -- name: Install Discord - community.general.flatpak: - name: "com.discordapp.Discord" - state: present - method: user