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
|
||||
|
|
|
|||
12
.local/share/github-versions/dolt
Executable file
12
.local/share/github-versions/dolt
Executable file
|
|
@ -0,0 +1,12 @@
|
|||
#! /usr/bin/sh
|
||||
|
||||
package=dolt
|
||||
repo=dolthub/dolt
|
||||
resource=dolt-linux-amd64.tar.gz
|
||||
|
||||
install_dolt() {
|
||||
tar xz --directory="$(systemd-path user-binaries)" --strip-components=2 dolt-linux-amd64/bin/dolt
|
||||
chmod 550 "$(systemd-path user-binaries)"/dolt
|
||||
}
|
||||
|
||||
github_update "${package}" "${repo}" "${resource}" install_dolt
|
||||
14
.local/share/github-versions/rust-analyzer
Executable file
14
.local/share/github-versions/rust-analyzer
Executable file
|
|
@ -0,0 +1,14 @@
|
|||
#! /usr/bin/sh
|
||||
|
||||
package=rust-analyzer
|
||||
repo=rust-lang/rust-analyzer
|
||||
resource=rust-analyzer-x86_64-unknown-linux-gnu.gz
|
||||
|
||||
install_rust_analyzer() {
|
||||
tempfile="$(mktemp)"
|
||||
gunzip --to-stdout - > "${tempfile}"
|
||||
chmod 550 "${tempfile}"
|
||||
mv "${tempfile}" "$(systemd-path user-binaries)"/rust-analyzer
|
||||
}
|
||||
|
||||
github_update "${package}" "${repo}" "${resource}" install_rust_analyzer
|
||||
Loading…
Add table
Add a link
Reference in a new issue