Set up automated updates for GitHub-sourced binaries
This commit is contained in:
parent
4810683763
commit
77a5e344ae
7 changed files with 75 additions and 9 deletions
45
.local/bin/ghup
Executable file
45
.local/bin/ghup
Executable 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
|
||||
|
|
@ -24,3 +24,4 @@ apt_update
|
|||
pipx_update
|
||||
rustup update
|
||||
cargo_update
|
||||
ghup
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue