NAME="polyrec"
INSTALLER="${NAME}up"
PROJECT_ROOT="$HOME/.$NAME"
PROJECT_BIN="$PROJECT_ROOT/bin"
PROJECT_TMP="$PROJECT_ROOT/tmp"
INSTALLER_PATH="$PROJECT_BIN/$INSTALLER"
PROJECT_REPO="abdelhamidbakhta/polyrec-rs/main"
INSTALLER_URL="https://raw.githubusercontent.com/$PROJECT_REPO/$INSTALLER"
add_to_shell() {
mkdir -p $PROJECT_BIN
mkdir -p $PROJECT_TMP
curl -sL $INSTALLER_URL -o $INSTALLER_PATH
chmod +x "$INSTALLER_PATH"
case $SHELL in
*/zsh)
PROFILE=$HOME/.zshrc
PREF_SHELL=zsh
;;
*/bash)
PROFILE=$HOME/.bashrc
PREF_SHELL=bash
;;
*/fish)
PROFILE=$HOME/.config/fish/config.fish
PREF_SHELL=fish
;;
*)
echo "$INSTALLER: could not detect shell, manually add ${PROJECT_ROOT} to your PATH."
exit 1
esac
IN_PROFILE=$(grep $NAME $PROFILE)
if [ $? -ne 0 ]; then
echo "export PATH=\"\$PATH:$PROJECT_BIN\"" >> $PROFILE
fi
}
install_polyrec() {
PLATFORM="$(uname -s)"
case $PLATFORM in
Linux)
PLATFORM="linux"
;;
Darwin)
PLATFORM="darwin"
;;
*)
err "unsupported platform: $PLATFORM"
;;
esac
ARCHITECTURE="$(uname -m)"
if [ "${ARCHITECTURE}" = "x86_64" ]; then
if [ "$(sysctl -n sysctl.proc_translated 2>/dev/null)" = "1" ]; then
ARCHITECTURE="arm64" else
ARCHITECTURE="amd64" fi
elif [ "${ARCHITECTURE}" = "arm64" ] ||[ "${ARCHITECTURE}" = "aarch64" ] ; then
ARCHITECTURE="arm64" else
ARCHITECTURE="amd64" fi
echo "Pulling $NAME release..."
TARBALL_URL="https://github.com/$PROJECT_REPO/releases/download/${LATEST_VER}/${NAME}_${PLATFORM}_${ARCHITECTURE}.tar.gz"
find $PROJECT_BIN ! -name "$INSTALLER" -type f -exec rm {} +
echo "Unpacking polyrec release...\n"
curl -L $TARBALL_URL | tar -xzC $PROJECT_BIN
echo "$NAME installed at version: ${LATEST_VER}\n"
}
install_polyrec_manually() {
if ! command -v cargo > /dev/null
then
echo "please install rustlang: https://www.rust-lang.org/tools/install"
exit 1
fi
if ! command -v rustup > /dev/null
then
echo "please install rustup: https://rustup.rs"
exit 1
fi
if ! command -v git > /dev/null
then
echo "please install git"
exit 1
fi
DEFAULT=$(rustup default | grep nightly)
if [ $? -ne 0 ]; then
echo "please set the following:"
echo "\trustup toolchain install nightly"
echo "\trustup default nightly\n"
exit 1
fi
WRK_DIR=$(pwd)
echo "Pulling $NAME repo..."
git clone --quiet https://github.com/keep-starknet-strange/polyrec.git $PROJECT_TMP/polyrec
cd $PROJECT_TMP/polyrec
echo "Building $NAME...\n"
cargo build -q --all --release
find $PROJECT_BIN ! -name "$INSTALLER" -type f -exec rm {} +
mv ./target/release/polyrec $PROJECT_BIN
polyrec_VER=$(polyrec --version | awk '{print $2}')
cd $WRK_DIR
rm -rf $PROJECT_TMP/polyrec
echo "$NAME installed at version: ${polyrec_VER}\n"
}
if [ ! -d "$PROJECT_ROOT" ]; then
echo "Installing $NAME root..."
add_to_shell
fi
LATEST_VER=$(curl -sL https://api.github.com/repos/$PROJECT_REPO/releases/latest | grep -o '"tag_name": "[^"]*' | grep -o '[^"]*$')
if [ "$1" = "dev" ] || [ $? -ne 0 ]; then
install_polyrec_manually
else
CURRENT_VER=$(polyrec --version | awk '{print $2}')
if [ "$LATEST_TAG" = "v$CURRENT_VER" ]; then
echo "$NAME is currently running the latest version: $LATEST_VER"
else
echo "$NAME being updated to $LATEST_VER"
install_polyrec
fi
fi
echo "$NAME root installed at: $PROJECT_ROOT"
if [ ! -z "$PROFILE" ]; then echo "\trun 'source $PROFILE' to activate path"; fi
exit 0