#!/usr/bin/env sh

set -e

INFO="[INFO]"
ERROR="[ERROR]"

PROJECT_NAME='Ookla Speedtest CLI'
BIN_DIR='/usr/local/bin'
BIN_NAME='speedtest'
BIN_FILE="${BIN_DIR}/${BIN_NAME}"

if [ "$(uname -s)" != "Linux" ]; then
    echo "${ERROR} This operating system is not supported."
    exit 1
fi

if [ "$(id -u)" != 0 ]; then
    echo "${ERROR} This script must be run as root."
    exit 1
fi

echo "${INFO} Get CPU architecture ..."
if command -v apk > /dev/null 2>&1; then
    PKGT='(apk)'
    OS_ARCH=$(apk --print-arch)
elif command -v dpkg > /dev/null 2>&1; then
    PKGT='(dpkg)'
    OS_ARCH=$(dpkg --print-architecture | awk -F- '{ print $NF }')
else
    OS_ARCH=$(uname -m)
fi
case ${OS_ARCH} in
*86)
    FILE_KEYWORD='i386'
    ;;
x86_64 | amd64)
    FILE_KEYWORD='x86_64'
    ;;
aarch64 | arm64)
    FILE_KEYWORD='aarch64'
    ;;
arm*)
    FILE_KEYWORD='arm'
    ;;
*)
    echo "${ERROR} Unsupported architecture: ${OS_ARCH} ${PKGT}"
    exit 1
    ;;
esac
echo "${INFO} Architecture: ${OS_ARCH} ${PKGT}"

echo "${INFO} Get ${PROJECT_NAME} download URL ..."
DOWNLOAD_URL="https://install.speedtest.net/app/cli/ookla-speedtest-1.0.0-${FILE_KEYWORD}-linux.tgz"
echo "${INFO} Download URL: ${DOWNLOAD_URL}"

# Create temporary directory
TEMP_DIR=$(mktemp -d)
trap 'rm -rf ${TEMP_DIR}' EXIT

echo "${INFO} Downloading ${PROJECT_NAME} ..."
curl -LS "${DOWNLOAD_URL}" -o "${TEMP_DIR}/speedtest.tgz"

echo "${INFO} Installing ${PROJECT_NAME} ..."
tar -xzC ${BIN_DIR} -f "${TEMP_DIR}/speedtest.tgz" ${BIN_NAME}
chmod +x ${BIN_FILE}
if ! echo "${PATH}" | grep -q "${BIN_DIR}"; then
    ln -sf ${BIN_FILE} /usr/bin/${BIN_NAME}
fi

if [ -s ${BIN_FILE} ] && ${BIN_NAME} --version > /dev/null 2>&1; then
    echo "${INFO} Done."
else
    echo "${ERROR} ${PROJECT_NAME} installation failed !"
    exit 1
fi