mirror of
https://github.com/zkonduit/ezkl.git
synced 2026-01-08 05:53:57 -05:00
185 lines
6.2 KiB
Bash
185 lines
6.2 KiB
Bash
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
|
|
BASE_DIR=${XDG_CONFIG_HOME:-$HOME}
|
|
EZKL_DIR=${EZKL_DIR-"$BASE_DIR/.ezkl"}
|
|
|
|
# Create the .ezkl bin directory if it doesn't exit
|
|
mkdir -p $EZKL_DIR
|
|
|
|
# Store the correct profile file (i.e. .profile for bash or .zshenv for ZSH).
|
|
case $SHELL in
|
|
*/zsh)
|
|
PROFILE=${ZDOTDIR-"$HOME"}/.zshenv
|
|
PREF_SHELL=zsh
|
|
;;
|
|
*/bash)
|
|
PROFILE=$HOME/.bashrc
|
|
PREF_SHELL=bash
|
|
;;
|
|
*/fish)
|
|
PROFILE=$HOME/.config/fish/config.fish
|
|
PREF_SHELL=fish
|
|
;;
|
|
*/ash)
|
|
PROFILE=$HOME/.profile
|
|
PREF_SHELL=ash
|
|
;;
|
|
*)
|
|
echo "NOTICE: Shell could not be detected, you will need to manually add ${EZKL_DIR} to your PATH."
|
|
esac
|
|
|
|
# Check for non standard installation of ezkl
|
|
if [ "$(which ezkl)s" != "s" ] && [ "$(which ezkl)" != "$EZKL_DIR/ezkl" ] ; then
|
|
echo "ezkl is installed in a non-standard directory, $(which ezkl). To use the automated installer, remove the existing ezkl from path to prevent conflicts"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ":$PATH:" != *":${EZKL_DIR}:"* ]]; then
|
|
# Add the ezkl directory to the path and ensure the old PATH variables remain.
|
|
echo >> $PROFILE && echo "export PATH=\"\$PATH:$EZKL_DIR\"" >> $PROFILE
|
|
fi
|
|
|
|
# Install latest ezkl version
|
|
# Get the right release URL
|
|
if [ -z "$1" ]
|
|
then
|
|
RELEASE_URL="https://api.github.com/repos/zkonduit/ezkl/releases/latest"
|
|
echo "No version tags provided, installing the latest ezkl version"
|
|
else
|
|
RELEASE_URL="https://api.github.com/repos/zkonduit/ezkl/releases/tags/$1"
|
|
echo "Installing ezkl version $1"
|
|
fi
|
|
|
|
PLATFORM=""
|
|
case "$(uname -s)" in
|
|
|
|
Darwin*)
|
|
PLATFORM="macos"
|
|
;;
|
|
|
|
Linux*Microsoft*)
|
|
PLATFORM="linux"
|
|
;;
|
|
|
|
Linux*)
|
|
PLATFORM="linux"
|
|
;;
|
|
|
|
CYGWIN*|MINGW*|MINGW32*|MSYS*)
|
|
PLATFORM="windows-msvc"
|
|
;;
|
|
|
|
*)
|
|
echo "Platform is not supported. If you would need support for the platform please submit an issue https://github.com/zkonduit/ezkl/issues/new/choose"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# Check arch
|
|
ARCHITECTURE="$(uname -m)"
|
|
if [ "${ARCHITECTURE}" = "x86_64" ]; then
|
|
# Redirect stderr to /dev/null to avoid printing errors if non Rosetta.
|
|
if [ "$(sysctl -n sysctl.proc_translated 2>/dev/null)" = "1" ]; then
|
|
ARCHITECTURE="arm64" # Rosetta.
|
|
else
|
|
ARCHITECTURE="amd64" # Intel.
|
|
fi
|
|
elif [ "${ARCHITECTURE}" = "arm64" ] ||[ "${ARCHITECTURE}" = "aarch64" ]; then
|
|
ARCHITECTURE="aarch64" # Arm.
|
|
elif [ "${ARCHITECTURE}" = "amd64" ]; then
|
|
ARCHITECTURE="amd64" # Amd
|
|
else
|
|
echo "Architecture is not supported. If you would need support for the architecture please submit an issue https://github.com/zkonduit/ezkl/issues/new/choose"
|
|
exit 1
|
|
fi
|
|
|
|
# Remove existing ezkl
|
|
echo "Removing old ezkl binary if it exists"
|
|
[ -e file ] && rm file
|
|
|
|
# echo platform and architecture
|
|
echo "Platform: $PLATFORM"
|
|
echo "Architecture: $ARCHITECTURE"
|
|
|
|
# download the release and unpack the right tarball
|
|
if [ "$PLATFORM" == "windows-msvc" ]; then
|
|
JSON_RESPONSE=$(curl -s "$RELEASE_URL")
|
|
FILE_URL=$(echo "$JSON_RESPONSE" | grep -o 'https://github.com[^"]*' | grep "build-artifacts.ezkl-windows-msvc.tar.gz")
|
|
|
|
echo "Downloading package"
|
|
curl -L "$FILE_URL" -o "$EZKL_DIR/build-artifacts.ezkl-windows-msvc.tar.gz"
|
|
|
|
echo "Unpacking package"
|
|
tar -xzf "$EZKL_DIR/build-artifacts.ezkl-windows-msvc.tar.gz" -C "$EZKL_DIR"
|
|
|
|
echo "Cleaning up"
|
|
rm "$EZKL_DIR/build-artifacts.ezkl-windows-msvc.tar.gz"
|
|
|
|
elif [ "$PLATFORM" == "macos" ]; then
|
|
if [ "$ARCHITECTURE" == "aarch64" ] || [ "$ARCHITECTURE" == "arm64" ]; then
|
|
JSON_RESPONSE=$(curl -s "$RELEASE_URL")
|
|
FILE_URL=$(echo "$JSON_RESPONSE" | grep -o 'https://github.com[^"]*' | grep "build-artifacts.ezkl-macos-aarch64.tar.gz")
|
|
|
|
echo "Downloading package"
|
|
curl -L "$FILE_URL" -o "$EZKL_DIR/build-artifacts.ezkl-macos-aarch64.tar.gz"
|
|
|
|
echo "Unpacking package"
|
|
tar -xzf "$EZKL_DIR/build-artifacts.ezkl-macos-aarch64.tar.gz" -C "$EZKL_DIR"
|
|
|
|
echo "Cleaning up"
|
|
rm "$EZKL_DIR/build-artifacts.ezkl-macos-aarch64.tar.gz"
|
|
else
|
|
JSON_RESPONSE=$(curl -s "$RELEASE_URL")
|
|
FILE_URL=$(echo "$JSON_RESPONSE" | grep -o 'https://github.com[^"]*' | grep "build-artifacts.ezkl-macos.tar.gz")
|
|
|
|
echo "Downloading package"
|
|
curl -L "$FILE_URL" -o "$EZKL_DIR/build-artifacts.ezkl-macos.tar.gz"
|
|
|
|
echo "Unpacking package"
|
|
tar -xzf "$EZKL_DIR/build-artifacts.ezkl-macos.tar.gz" -C "$EZKL_DIR"
|
|
|
|
echo "Cleaning up"
|
|
rm "$EZKL_DIR/build-artifacts.ezkl-macos.tar.gz"
|
|
|
|
fi
|
|
|
|
elif [ "$PLATFORM" == "linux" ]; then
|
|
if [ "$ARCHITECTURE" == "amd64" ]; then
|
|
JSON_RESPONSE=$(curl -s "$RELEASE_URL")
|
|
FILE_URL=$(echo "$JSON_RESPONSE" | grep -o 'https://github.com[^"]*' | grep "build-artifacts.ezkl-linux-gnu.tar.gz")
|
|
|
|
echo "Downloading package"
|
|
curl -L "$FILE_URL" -o "$EZKL_DIR/build-artifacts.ezkl-linux-gnu.tar.gz"
|
|
|
|
echo "Unpacking package"
|
|
tar -xzf "$EZKL_DIR/build-artifacts.ezkl-linux-gnu.tar.gz" -C "$EZKL_DIR"
|
|
|
|
echo "Cleaning up"
|
|
rm "$EZKL_DIR/build-artifacts.ezkl-linux-gnu.tar.gz"
|
|
elif [ "$ARCHITECTURE" == "aarch64" ]; then
|
|
JSON_RESPONSE=$(curl -s "$RELEASE_URL")
|
|
FILE_URL=$(echo "$JSON_RESPONSE" | grep -o 'https://github.com[^"]*' | grep "build-artifacts.ezkl-linux-aarch64.tar.gz")
|
|
|
|
echo "Downloading package"
|
|
curl -L "$FILE_URL" -o "$EZKL_DIR/build-artifacts.ezkl-linux-aarch64.tar.gz"
|
|
|
|
echo "Unpacking package"
|
|
tar -xzf "$EZKL_DIR/build-artifacts.ezkl-linux-aarch64.tar.gz" -C "$EZKL_DIR"
|
|
|
|
echo "Cleaning up"
|
|
rm "$EZKL_DIR/build-artifacts.ezkl-linux-aarch64.tar.gz"
|
|
else
|
|
echo "Non aarch ARM architectures are not supported for Linux at the moment. If you would need support for the ARM architectures on linux please submit an issue https://github.com/zkonduit/ezkl/issues/new/choose"
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "Platform and Architecture is not supported. If you would need support for the platform and architecture please submit an issue https://github.com/zkonduit/ezkl/issues/new/choose"
|
|
exit 1
|
|
fi
|
|
|
|
|
|
echo && echo "Successfully downloaded ezkl at ${EZKL_DIR}"
|
|
echo "We detected that your preferred shell is ${PREF_SHELL} and added ezkl to PATH. Run 'source ${PROFILE}' or start a new terminal session to use ezkl."
|