Skip to content

Commit bf52d0d

Browse files
authored
Merge pull request #154 from richlamdev/make-fzf-upgrade-mac-compatible
make fzf upgrade macos compatible
2 parents ef8381c + 20f4746 commit bf52d0d

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

scripts/fzf_upgrade.sh

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
#!/bin/bash
2+
# macOS-compatible: use sed instead of grep -Po
3+
# alternatively use brew to install and manage fzf
24
set -e
35

46
# --- Optional colours ---
@@ -13,32 +15,31 @@ else
1315
NC="\033[0m"
1416
fi
1517

16-
# --- Step 1: Get current fzf version ---
18+
# --- Get current fzf version ---
1719
echo -e "${CYAN}Current fzf version:${NC}"
1820
CURRENT_VERSION=""
1921
if command -v fzf >/dev/null 2>&1; then
2022
CURRENT_VERSION_FULL=$(fzf --version)
2123
echo "$CURRENT_VERSION_FULL"
2224
# Extract version number (e.g., "0.56.3 (brew)" -> "0.56.3")
23-
CURRENT_VERSION=$(echo "$CURRENT_VERSION_FULL" | grep -Po '^[0-9]+\.[0-9]+\.[0-9]+')
25+
CURRENT_VERSION=$(echo "$CURRENT_VERSION_FULL" | sed -E 's/^([0-9]+\.[0-9]+\.[0-9]+).*/\1/')
2426
else
2527
echo -e "${YELLOW}fzf not currently installed.${NC}"
2628
fi
2729
echo
2830

29-
# --- Step 2: Fetch latest release via GitHub API ---
31+
# --- Fetch latest release via GitHub API ---
3032
echo -e "${GREEN}Fetching latest fzf release...${NC}"
31-
3233
API_URL="https://api.github.com/repos/junegunn/fzf/releases/latest"
3334

3435
if command -v jq >/dev/null 2>&1; then
3536
# Use jq if available
3637
RELEASE_DATA=$(curl -Ls "$API_URL")
3738
LATEST_VERSION=$(echo "$RELEASE_DATA" | jq -r '.tag_name' | sed 's/^v//')
3839
else
39-
# Fallback: parse JSON with grep/sed
40+
# Fallback: parse JSON with sed (macOS-compatible)
4041
RELEASE_DATA=$(curl -Ls "$API_URL")
41-
LATEST_VERSION=$(echo "$RELEASE_DATA" | grep -Po '"tag_name":\s*"\K[^"]+' | sed 's/^v//')
42+
LATEST_VERSION=$(echo "$RELEASE_DATA" | sed -n 's/.*"tag_name"[[:space:]]*:[[:space:]]*"v\{0,1\}\([^"]*\)".*/\1/p' | head -n 1)
4243
fi
4344

4445
if [ -z "$LATEST_VERSION" ]; then
@@ -49,7 +50,7 @@ fi
4950
echo -e "${CYAN}Latest stable version:${NC} ${LATEST_VERSION}"
5051
echo
5152

52-
# --- Step 3: Compare versions ---
53+
# --- Compare versions ---
5354
if [ "$CURRENT_VERSION" = "$LATEST_VERSION" ]; then
5455
echo -e "${GREEN}You already have the latest version (${LATEST_VERSION}) installed!${NC}"
5556
echo -e "${YELLOW}No update needed.${NC}"
@@ -64,7 +65,7 @@ else
6465
fi
6566
echo
6667

67-
# --- Step 4: Install/Upgrade fzf ---
68+
# --- Install/Upgrade fzf ---
6869
INSTALL_DIR="$HOME/.fzf"
6970

7071
# Remove existing installation if it exists
@@ -81,7 +82,7 @@ git clone --depth 1 --branch "v${LATEST_VERSION}" https://github.com/junegunn/fz
8182
echo -e "${GREEN}Running fzf installation script...${NC}"
8283
"$INSTALL_DIR/install" --key-bindings --completion --no-update-rc
8384

84-
# --- Step 5: Verify ---
85+
# --- Verify ---
8586
echo
8687
echo -e "${MAGENTA}fzf upgraded successfully!${NC}"
8788
echo

0 commit comments

Comments
 (0)