71 lines
1.6 KiB
Bash
Executable File
71 lines
1.6 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -e
|
|
|
|
if [ -n "${DEBUG}" ]; then
|
|
set -x
|
|
fi
|
|
|
|
_centrifugo_latest() {
|
|
curl -s https://api.github.com/repos/centrifugal/centrifugo/releases/latest | grep "tag_name" | awk '{print $2}' | sed 's/[",]//g'
|
|
}
|
|
|
|
_detect_binary() {
|
|
os="$(uname)"
|
|
case "$os" in
|
|
Linux|Darwin) echo "centrifugo" ;;
|
|
*) echo "Unsupported operating system: $os" 1>&2; return 1 ;;
|
|
esac
|
|
unset os
|
|
}
|
|
|
|
_detect_os() {
|
|
os="$(uname)"
|
|
case "$os" in
|
|
Linux) echo "linux" ;;
|
|
Darwin) echo "darwin" ;;
|
|
*) echo "Unsupported operating system: $os" 1>&2; return 1 ;;
|
|
esac
|
|
unset os
|
|
}
|
|
|
|
_detect_arch() {
|
|
arch="$(uname -m)"
|
|
case "$arch" in
|
|
amd64|x86_64) echo "amd64" ;;
|
|
arm64|aarch64) echo "arm64" ;;
|
|
*) echo "Unsupported processor architecture: $arch" 1>&2; return 1 ;;
|
|
esac
|
|
unset arch
|
|
}
|
|
|
|
_download_url() {
|
|
echo "https://github.com/centrifugal/centrifugo/releases/download/$CENTRIFUGO_VERSION/${centrifugoBinary}_${CENTRIFUGO_VERSION#"v"}_${centrifugoOs}_${centrifugoArch}.tar.gz"
|
|
}
|
|
|
|
main() {
|
|
if [ -z "${CENTRIFUGO_VERSION}" ]; then
|
|
CENTRIFUGO_VERSION=$(_centrifugo_latest)
|
|
fi
|
|
|
|
centrifugoInstallPath=`pwd`
|
|
centrifugoBinary="$(_detect_binary)"
|
|
centrifugoOs="$(_detect_os)"
|
|
centrifugoArch="$(_detect_arch)"
|
|
centrifugoDownloadUrl="$(_download_url)"
|
|
|
|
mkdir -p -- "$centrifugoInstallPath"
|
|
|
|
echo "Downloading centrifugo from URL: $centrifugoDownloadUrl"
|
|
|
|
tmpdir=$(mktemp -d)
|
|
curl -sSLf "$centrifugoDownloadUrl" >"$tmpdir/centrifugo.tar.gz"
|
|
tar -xzf $tmpdir/centrifugo.tar.gz ${centrifugoBinary}
|
|
chmod +x "$centrifugoBinary"
|
|
rm -r $tmpdir
|
|
|
|
echo "centrifugo is now executable in $centrifugoInstallPath"
|
|
}
|
|
|
|
main
|