mirror of
https://github.com/ChainSafe/lodestar.git
synced 2026-01-09 23:58:12 -05:00
92 lines
2.4 KiB
Bash
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."
|