Set up automated updates for GitHub-sourced binaries

This commit is contained in:
Ohad Livne 2025-06-04 22:46:26 +03:00
parent 4810683763
commit 77a5e344ae
Signed by: libohad-dev
GPG key ID: 34FDC68B51191A4D
7 changed files with 75 additions and 9 deletions

45
.local/bin/ghup Executable file
View file

@ -0,0 +1,45 @@
#! /usr/bin/sh
STATE_DIR="$(systemd-path user-state-private)"/github-versions
mkdir -p "${STATE_DIR}"
github_update() {
package="$1"
repo="$2"
resource="$3"
post_fetch="$4"
response=$(curl --silent "https://api.github.com/repos/${repo}/releases/latest")
latest_version=$(printf '%s' "${response}" | jq --raw-output .name)
VERSION_FILE="${STATE_DIR}/${package}"
install="false"
if [ -f "${VERSION_FILE}" ]; then
installed_version=$(cat "${VERSION_FILE}")
if [ "${installed_version}" = "${latest_version}" ]; then
echo "Latest version \"${package} ${installed_version}\" is already installed"
else
echo "Upgrading \"${package} ${installed_version}\" -> \"${package} ${latest_version}\"..."
install="true"
fi
else
echo "Installing \"${package} ${latest_version}\"..."
install="true"
fi
if [ "${install}" = "true" ]; then
asset=$(printf '%s' "${response}" | jq --raw-output ".assets[] | select(.name == \"${resource}\").browser_download_url")
curl --location "${asset}" | "${post_fetch}" && \
echo "${latest_version}" > "${VERSION_FILE}" && \
echo "Successfully installed \"${package} ${latest_version}\""
fi
}
PKG_DIR="$(systemd-path user-shared)"/github-versions
if [ -d "${PKG_DIR}" ]; then
echo "Starting iteration"
for package in "${PKG_DIR}"/*; do
# shellcheck source=/dev/null
. "${package}"
done
fi

View file

@ -24,3 +24,4 @@ apt_update
pipx_update
rustup update
cargo_update
ghup