Files
lodestar/install
2024-12-20 17:21:56 +00:00

92 lines
2.4 KiB
Bash

#!/bin/bash
# ASCII art
echo " _ _ _ "
echo " | | | | | | "
echo " | | ___ __| | ___ ___| |_ __ _ _ __ "
echo " | |/ _ \ / _ |/ _ \/ __| __/ _ | __|"
echo " | | (_) | (_| | __/\__ \ || (_| | | "
echo " |_|\___/ \__ _|\___||___/\__\__ _|_| "
echo ""
# Declare directories
TEMP_DIR=$(mktemp -d)
LOCAL_BIN="$HOME/.local/bin"
# Ensure ~/.local/bin exists
mkdir -p "$LOCAL_BIN"
# Inform the user about temporary directory usage
echo "Using temporary directory: $TEMP_DIR"
# Fetch the latest release tag from GitHub
echo "Fetching the latest version information..."
VERSION=$(curl -s "https://api.github.com/repos/ChainSafe/lodestar/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
# Check if VERSION is empty
if [ -z "$VERSION" ]; then
echo "Failed to fetch the latest version. Exiting."
exit 1
fi
echo "Latest version detected: $VERSION"
# Detect the operating system and architecture
OS=$(uname -s)
ARCH=$(uname -m)
# Translate architecture to expected format
case $ARCH in
x86_64) ARCH="amd64" ;;
aarch64|arm64) ARCH="arm64" ;;
*)
echo "Unsupported architecture: $ARCH. Exiting."
exit 1
;;
esac
# Translate OS to expected format
case $OS in
Linux) PLATFORM="linux-$ARCH" ;;
*)
echo "Unsupported operating system: $OS. Exiting."
exit 1
;;
esac
# Construct the download URL
URL="https://github.com/ChainSafe/lodestar/releases/download/$VERSION/lodestar-$VERSION-$PLATFORM.tar.gz"
echo "Downloading from: $URL"
# Download the tarball
if ! wget "$URL" -O "$TEMP_DIR/lodestar-$VERSION-$PLATFORM.tar.gz"; then
echo "Download failed. Exiting."
exit 1
fi
# Extract the tarball
echo "Extracting the binary..."
if ! tar -xzf "$TEMP_DIR/lodestar-$VERSION-$PLATFORM.tar.gz" -C "$TEMP_DIR"; then
echo "Extraction failed. Exiting."
exit 1
fi
# Move the binary to ~/.local/bin
echo "Moving the binary to $LOCAL_BIN..."
mv "$TEMP_DIR/lodestar" "$LOCAL_BIN/"
chmod +x "$LOCAL_BIN/lodestar"
# Verify if ~/.local/bin is in PATH
if [[ ":$PATH:" != *":$LOCAL_BIN:"* ]]; then
echo "Adding $LOCAL_BIN to PATH..."
echo 'export PATH="$PATH:$HOME/.local/bin"' >> "$HOME/.bashrc"
echo "Run 'source ~/.bashrc' to apply changes to your shell."
fi
# Clean up the temporary directory
rm -rf "$TEMP_DIR"
# Inform the user of successful installation
echo "Installation complete!"
echo "Run 'lodestar --help' to get started."