Upload files to "/"
This commit is contained in:
79
update-cpd-cli.sh
Normal file
79
update-cpd-cli.sh
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# update-cpd-cli.sh — Download and install the latest (or specified) cpd-cli release.
|
||||||
|
# Compatible with sh, bash, and zsh.
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# sudo ./update-cpd-cli.sh # auto-detect latest release
|
||||||
|
# sudo ./update-cpd-cli.sh 14.3.1 # install a specific version
|
||||||
|
#
|
||||||
|
# Assumes: curl, tar, and write access to INSTALL_DIR (run with sudo).
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
# ---------- configuration ----------
|
||||||
|
INSTALL_DIR="/usr/local/bin"
|
||||||
|
WORK_DIR="${TMPDIR:-/tmp}/cpd-cli-update-$$"
|
||||||
|
GITHUB_REPO="IBM/cpd-cli"
|
||||||
|
SYMLINKS="cpd-cli LICENSES plugins"
|
||||||
|
# ------------------------------------
|
||||||
|
|
||||||
|
cleanup() { rm -rf "$WORK_DIR"; }
|
||||||
|
trap cleanup EXIT
|
||||||
|
|
||||||
|
die() { printf "ERROR: %s\n" "$1" >&2; exit 1; }
|
||||||
|
|
||||||
|
# ---------- resolve version ----------
|
||||||
|
if [ $# -ge 1 ]; then
|
||||||
|
VERSION="$1"
|
||||||
|
else
|
||||||
|
printf "Detecting latest cpd-cli release... "
|
||||||
|
VERSION=$(curl -fsSL -o /dev/null -w '%{url_effective}' \
|
||||||
|
"https://github.com/${GITHUB_REPO}/releases/latest" \
|
||||||
|
| grep -oE '[0-9]+\.[0-9]+\.[0-9]+$') \
|
||||||
|
|| die "Could not determine latest version. Specify one manually: $0 <version>"
|
||||||
|
printf "%s\n" "$VERSION"
|
||||||
|
fi
|
||||||
|
|
||||||
|
TARBALL="cpd-cli-linux-EE-${VERSION}.tgz"
|
||||||
|
URL="https://github.com/${GITHUB_REPO}/releases/download/v${VERSION}/${TARBALL}"
|
||||||
|
|
||||||
|
# ---------- download ----------
|
||||||
|
mkdir -p "$WORK_DIR"
|
||||||
|
printf "Downloading %s ...\n" "$URL"
|
||||||
|
curl -fSL -o "${WORK_DIR}/${TARBALL}" "$URL" || die "Download failed. Check the version number."
|
||||||
|
|
||||||
|
# ---------- extract ----------
|
||||||
|
printf "Extracting... "
|
||||||
|
tar xzf "${WORK_DIR}/${TARBALL}" -C "$WORK_DIR"
|
||||||
|
EXTRACTED=$(find "$WORK_DIR" -maxdepth 1 -type d -name "cpd-cli-linux-EE-*" | head -1)
|
||||||
|
[ -n "$EXTRACTED" ] || die "Could not find extracted directory in ${WORK_DIR}."
|
||||||
|
DIR_NAME=$(basename "$EXTRACTED")
|
||||||
|
printf "%s\n" "$DIR_NAME"
|
||||||
|
|
||||||
|
# ---------- check for no-op ----------
|
||||||
|
if [ -d "${INSTALL_DIR}/${DIR_NAME}" ]; then
|
||||||
|
printf "Directory %s/%s already exists. " "$INSTALL_DIR" "$DIR_NAME"
|
||||||
|
printf "Re-linking anyway.\n"
|
||||||
|
else
|
||||||
|
printf "Installing to %s/%s ...\n" "$INSTALL_DIR" "$DIR_NAME"
|
||||||
|
mv "$EXTRACTED" "$INSTALL_DIR/"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ---------- update symlinks ----------
|
||||||
|
printf "Updating symlinks in %s ...\n" "$INSTALL_DIR"
|
||||||
|
for link in $SYMLINKS; do
|
||||||
|
target="${INSTALL_DIR}/${link}"
|
||||||
|
if [ -L "$target" ]; then
|
||||||
|
rm "$target"
|
||||||
|
elif [ -e "$target" ]; then
|
||||||
|
die "${target} exists and is not a symlink — refusing to overwrite."
|
||||||
|
fi
|
||||||
|
ln -s "${DIR_NAME}/${link}" "$target"
|
||||||
|
printf " %s -> %s/%s\n" "$link" "$DIR_NAME" "$link"
|
||||||
|
done
|
||||||
|
|
||||||
|
# ---------- verify ----------
|
||||||
|
printf "\nInstalled:\n"
|
||||||
|
cpd-cli version
|
||||||
|
|
||||||
|
printf "\nDone.\n"
|
||||||
Reference in New Issue
Block a user