mirror of
https://github.com/OneUptime/oneuptime
synced 2024-11-22 23:30:10 +00:00
162 lines
3.5 KiB
Bash
162 lines
3.5 KiB
Bash
#!/bin/sh
|
|
set -e
|
|
|
|
usage() {
|
|
echo "Usage: $0 [-b bindir] [-d]"
|
|
echo " -b sets the directory for the binary installation, default is ./bin"
|
|
echo " -d enables debug mode"
|
|
exit 1
|
|
}
|
|
|
|
# if there's no $HOME env var then set it to /usr
|
|
|
|
if [ -z "$HOME" ]; then
|
|
HOME=/usr
|
|
fi
|
|
|
|
# Default parameters
|
|
BINDIR=$HOME/bin
|
|
|
|
# Make sure bindir exists
|
|
if [ ! -d "$BINDIR" ]; then
|
|
mkdir -p "$BINDIR"
|
|
fi
|
|
|
|
DEBUG=0
|
|
|
|
# Parse command-line options
|
|
while getopts "b:d" opt; do
|
|
case ${opt} in
|
|
b )
|
|
BINDIR=$OPTARG
|
|
;;
|
|
d )
|
|
set -x
|
|
DEBUG=1
|
|
;;
|
|
\? )
|
|
usage
|
|
;;
|
|
esac
|
|
done
|
|
|
|
echo "Installing to ${BINDIR}"
|
|
mkdir -p "${BINDIR}"
|
|
|
|
# Detect platform and architecture
|
|
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
|
|
ARCH=$(uname -m)
|
|
case $ARCH in
|
|
x86_64)
|
|
ARCH=amd64
|
|
;;
|
|
aarch64)
|
|
ARCH=arm64
|
|
;;
|
|
*arm64*)
|
|
ARCH=arm64
|
|
;;
|
|
*arm*)
|
|
ARCH=arm
|
|
;;
|
|
*)
|
|
echo "Architecture $ARCH is not supported"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# Fetch the latest release tag from GitHub
|
|
REPO="oneuptime/oneuptime"
|
|
API_URL="https://api.github.com/repos/${REPO}/releases/latest"
|
|
TAG=$(curl -s ${API_URL} | grep '"tag_name":' | sed -E 's/.*"tag_name": "([^"]+)".*/\1/')
|
|
|
|
if [ "$TAG" = "" ]; then
|
|
echo "Failed to find the latest release. Please check your internet connection or GitHub API limits."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Fetching the latest release: $TAG"
|
|
|
|
# Construct the URL for the binary release
|
|
URL="https://github.com/${REPO}/releases/download/${TAG}/oneuptime-infrastructure-agent_${OS}_${ARCH}.tar.gz"
|
|
|
|
# Check if wget is installed otherwise install it, do it for all os'es
|
|
|
|
if ! command -v wget > /dev/null; then
|
|
if [ "$OS" = "darwin" ]; then
|
|
brew install wget
|
|
fi
|
|
if [ "$OS" = "linux" ]; then
|
|
apt-get install wget
|
|
fi
|
|
if [ "$OS" = "freebsd" ]; then
|
|
pkg install wget
|
|
fi
|
|
if [ "$OS" = "openbsd" ]; then
|
|
pkg_add wget
|
|
fi
|
|
fi
|
|
|
|
# Download and extract the binary
|
|
wget "${URL}"
|
|
|
|
# if darwin
|
|
|
|
tar -xvzf "oneuptime-infrastructure-agent_${OS}_${ARCH}.tar.gz" -C "${BINDIR}"
|
|
|
|
# delete the downlaoded file
|
|
rm "oneuptime-infrastructure-agent_${OS}_${ARCH}.tar.gz"
|
|
|
|
# Check if the binary is executable
|
|
if [ ! -x "${BINDIR}/oneuptime-infrastructure-agent" ]; then
|
|
echo "Failed to install oneuptime-infrastructure-agent"
|
|
exit 1
|
|
fi
|
|
|
|
# Now add binary to path
|
|
|
|
if [ -f "$HOME/.bashrc" ]; then
|
|
echo "export PATH=$PATH:$BINDIR" >> $HOME/.bashrc
|
|
source $HOME/.bashrc
|
|
fi
|
|
|
|
if [ -f "$HOME/.bash_profile" ]; then
|
|
echo "export PATH=$PATH:$BINDIR" >> $HOME/.bash_profile
|
|
source $HOME/.bash_profile
|
|
fi
|
|
|
|
if [ -f "$HOME/.zshrc" ]; then
|
|
echo "export PATH=$PATH:$BINDIR" >> $HOME/.zshrc
|
|
source $HOME/.zshrc
|
|
fi
|
|
|
|
if [ -f "$HOME/.profile" ]; then
|
|
echo "export PATH=$PATH:$BINDIR" >> $HOME/.profile
|
|
source $HOME/.profile
|
|
fi
|
|
|
|
if [ -f "$HOME/.bash_login" ]; then
|
|
echo "export PATH=$PATH:$BINDIR" >> $HOME/.bash_login
|
|
source $HOME/.bash_login
|
|
fi
|
|
|
|
if [ -f "$HOME/.bash_logout" ]; then
|
|
echo "export PATH=$PATH:$BINDIR" >> $HOME/.bash_logout
|
|
source $HOME/.bash_logout
|
|
fi
|
|
|
|
if [ -f "$HOME/.bash_aliases" ]; then
|
|
echo "export PATH=$PATH:$BINDIR" >> $HOME/.bash_aliases
|
|
source $HOME/.bash_aliases
|
|
fi
|
|
|
|
if [ -f "$HOME/.bashrc" ]; then
|
|
echo "export PATH=$PATH:$BINDIR" >> $HOME/.bashrc
|
|
source $HOME/.bashrc
|
|
fi
|
|
|
|
|
|
echo "oneuptime-infrastructure-agent has been installed to ${BINDIR}"
|
|
echo "oneuptime-infrastructure-agent installed successfully to ${BINDIR}. Please configure the agent using 'oneuptime-infrastructure-agent configure'."
|
|
echo "Please reload your shell or open a new shell session to use the oneuptime-infrastructure-agent command."
|