Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 39 additions & 15 deletions scripts/install_update_linux.sh
Original file line number Diff line number Diff line change
@@ -1,24 +1,48 @@
#!/bin/bash

# allow specifying different destination directory
set -e # Exit on any error

# Allow custom installation directory
DIR="${DIR:-"$HOME/.local/bin"}"

# map different architecture variations to the available binaries
# Map architecture to GitHub's binary naming convention
ARCH=$(uname -m)
case $ARCH in
i386|i686) ARCH=x86 ;;
armv6*) ARCH=armv6 ;;
armv7*) ARCH=armv7 ;;
aarch64*) ARCH=arm64 ;;
case "$ARCH" in
i386|i686) ARCH="x86" ;;
armv6*) ARCH="armv6" ;;
armv7*) ARCH="armv7" ;;
aarch64*) ARCH="arm64" ;;
x86_64) ARCH="x86_64" ;; # Explicitly handle common 64-bit
esac

# prepare the download URL
GITHUB_LATEST_VERSION=$(curl -L -s -H 'Accept: application/json' https://github.com/jesseduffield/lazydocker/releases/latest | sed -e 's/.*"tag_name":"\([^"]*\)".*/\1/')
GITHUB_FILE="lazydocker_${GITHUB_LATEST_VERSION//v/}_$(uname -s)_${ARCH}.tar.gz"
OS=$(uname -s | tr '[:upper:]' '[:lower:]') # Ensure lowercase (e.g., "darwin")

# Fetch latest version using GitHub API
GITHUB_LATEST_VERSION=$(curl -sfL https://api.github.com/repos/jesseduffield/lazydocker/releases/latest | grep -oP '"tag_name": "\K(.*)(?=")')
if [ -z "$GITHUB_LATEST_VERSION" ]; then
echo "Failed to fetch latest version."
exit 1
fi

# Build URL and download
GITHUB_FILE="lazydocker_${GITHUB_LATEST_VERSION//v/}_${OS}_${ARCH}.tar.gz"
GITHUB_URL="https://github.com/jesseduffield/lazydocker/releases/download/${GITHUB_LATEST_VERSION}/${GITHUB_FILE}"

# install/update the local binary
curl -L -o lazydocker.tar.gz $GITHUB_URL
tar xzvf lazydocker.tar.gz lazydocker
install -Dm 755 lazydocker -t "$DIR"
rm lazydocker lazydocker.tar.gz
echo "Downloading lazydocker $GITHUB_LATEST_VERSION for ${OS}_${ARCH}..."
if ! curl -sfL -o lazydocker.tar.gz "$GITHUB_URL"; then
echo "Download failed. Check your OS/architecture or network connection."
exit 1
fi

# Extract and install
tar -xzf lazydocker.tar.gz lazydocker
if [ ! -f "lazydocker" ]; then
echo "Extraction failed. Corrupted download?"
exit 1
fi

mkdir -p "$DIR" # Ensure directory exists
install -v -m 755 lazydocker -t "$DIR"
rm -f lazydocker lazydocker.tar.gz

echo "Installed lazydocker to $DIR"