publish discord auto updater
This commit is contained in:
32
README.md
Normal file
32
README.md
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# Discord Automatic Updater
|
||||||
|
This is a small shell script and systemd service that automatically check for discord updates in the background. It updates Discord by editing `/usr/share/discord/resources/build_info.json` to the most recent version number - the content of the updates are installed by Discord itself when launched.
|
||||||
|
|
||||||
|
Currently, this has only been tested with the debian-based Discord package. It may work with the `.rpm` installer as well - let me know if you try it. Update the appropriate environment variables in `update-discord.sh`.
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
Run this from inside the Git repo:
|
||||||
|
```sh
|
||||||
|
# move the script to a system location and make it executable
|
||||||
|
sudo mkdir -p /usr/local/bin
|
||||||
|
sudo cp ./update-discord.sh /usr/local/bin/update-discord
|
||||||
|
sudo chmod 755 /usr/local/bin/update-discord
|
||||||
|
|
||||||
|
# create the systemd service
|
||||||
|
sudo cp ./update-discord.service /etc/systemd/system/update-discord.service
|
||||||
|
|
||||||
|
# create the systemd timer
|
||||||
|
sudo cp ./update-discord.timer /etc/systemd/system/update-discord.timer
|
||||||
|
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl enable --now update-discord.timer
|
||||||
|
```
|
||||||
|
You can manually test it too:
|
||||||
|
```sh
|
||||||
|
# check schedule
|
||||||
|
systemctl list-timers | grep discord
|
||||||
|
|
||||||
|
# manually trigger and check logs
|
||||||
|
sudo systemctl start update-discord.service
|
||||||
|
journalctl -u update-discord.service
|
||||||
|
```
|
||||||
|
|
||||||
9
update-discord.service
Normal file
9
update-discord.service
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Update Discord
|
||||||
|
Wants=network-online.target
|
||||||
|
After=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/usr/local/bin/update-discord
|
||||||
|
TimeoutSec=5min
|
||||||
50
update-discord.sh
Normal file
50
update-discord.sh
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
################
|
||||||
|
# CHANGE THESE #
|
||||||
|
################
|
||||||
|
|
||||||
|
# path to your build_info.json file; include the file name
|
||||||
|
DISCORD_BUILD_INFO_PATH="/usr/share/discord/resources/build_info.json"
|
||||||
|
|
||||||
|
# for debian-based linux distributions (.deb installers)
|
||||||
|
DISCORD_PLATFORM="linux"
|
||||||
|
DISCORD_FORMAT="deb"
|
||||||
|
|
||||||
|
###########################
|
||||||
|
# DON'T CHANGE THIS STUFF #
|
||||||
|
###########################
|
||||||
|
|
||||||
|
# check for sudo
|
||||||
|
if [ $(id -g) -ne 0 ]; then
|
||||||
|
echo "Please run as sudo"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
apt-get update && apt-get install -y jq
|
||||||
|
|
||||||
|
# get currently installed version of Discord
|
||||||
|
ver_current=$(jq -r ".version" "$DISCORD_BUILD_INFO_PATH")
|
||||||
|
echo "Discord version $ver_current installed"
|
||||||
|
|
||||||
|
# check latest available Discord version by looking at the headers of the latest Discord download URL
|
||||||
|
pre_ver_available=$(curl -s -I "https://discord.com/api/download?platform=$DISCORD_PLATFORM&format=$DISCORD_FORMAT" | grep location)
|
||||||
|
|
||||||
|
# trim everything before and after the version number
|
||||||
|
ver_available="${pre_ver_available#*linux/}"
|
||||||
|
ver_available="${ver_available%/*}"
|
||||||
|
|
||||||
|
echo "Discord version $ver_available available"
|
||||||
|
|
||||||
|
if [ "$ver_current" = "$ver_available" ] ; then
|
||||||
|
echo "Discord is up to date!"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Discord is not up to date, editing $DISCORD_BUILD_INFO_PATH"
|
||||||
|
|
||||||
|
jq ".version = \"$ver_available\"" $DISCORD_BUILD_INFO_PATH > discord_build_info_tmp.json
|
||||||
|
chmod 644 discord_build_info_tmp.json
|
||||||
|
mv discord_build_info_tmp.json "$DISCORD_BUILD_INFO_PATH"
|
||||||
|
|
||||||
|
killall Discord
|
||||||
10
update-discord.timer
Normal file
10
update-discord.timer
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Run Discord updater daily and after boot
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
OnCalendar=*-*-* 03:00:00
|
||||||
|
OnBootSec=1min
|
||||||
|
Persistent=true
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=timers.target
|
||||||
Reference in New Issue
Block a user