add scripts
This commit is contained in:
74
update-go-path.sh
Normal file
74
update-go-path.sh
Normal file
@@ -0,0 +1,74 @@
|
||||
#!/bin/bash
|
||||
# Automatically detect Go installation and update .config for OpenWRT
|
||||
# Author: Zhe Yuan
|
||||
|
||||
set -e
|
||||
umask 022
|
||||
|
||||
CONFIG_FILE=".config"
|
||||
|
||||
echo "========================================"
|
||||
echo " Go Path Auto Updater for OpenWRT"
|
||||
echo "========================================"
|
||||
|
||||
# --- Check for .config file ---
|
||||
if [ ! -f "$CONFIG_FILE" ]; then
|
||||
echo "[ERROR] No .config file found in current directory!"
|
||||
echo "Please run this script inside your OpenWRT build root."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# --- Detect available Go installations ---
|
||||
GO_DIRS=(/usr/lib/go-*/)
|
||||
if [ ${#GO_DIRS[@]} -eq 0 ]; then
|
||||
echo "[ERROR] No Go installation found under /usr/lib/go-*"
|
||||
echo "Please install Go using: sudo apt install golang -y"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# --- Extract version numbers ---
|
||||
GO_VERSIONS=()
|
||||
for dir in "${GO_DIRS[@]}"; do
|
||||
ver=$(basename "$dir" | sed -E 's/^go-([0-9]+\.[0-9]+).*$/\1/')
|
||||
GO_VERSIONS+=("$ver")
|
||||
done
|
||||
|
||||
# --- Sort versions and pick the latest ---
|
||||
IFS=$'\n' sorted=($(sort -V <<<"${GO_VERSIONS[*]}"))
|
||||
LATEST_VER="${sorted[-1]}"
|
||||
LATEST_PATH="/usr/lib/go-${LATEST_VER}/"
|
||||
|
||||
echo "[INFO] Found Go versions: ${GO_VERSIONS[*]}"
|
||||
echo "[INFO] Using latest Go version: $LATEST_VER"
|
||||
echo "[INFO] Path: $LATEST_PATH"
|
||||
|
||||
# --- Check if multiple versions exist ---
|
||||
if [ ${#GO_VERSIONS[@]} -gt 1 ]; then
|
||||
echo "[WARN] Multiple Go versions detected!"
|
||||
echo "If you prefer to use an older version, modify manually:"
|
||||
echo " CONFIG_GOLANG_EXTERNAL_BOOTSTRAP_ROOT=\"/usr/lib/go-X.XX/\""
|
||||
echo
|
||||
fi
|
||||
|
||||
# --- Update .config ---
|
||||
if grep -q '^CONFIG_GOLANG_EXTERNAL_BOOTSTRAP_ROOT=' "$CONFIG_FILE"; then
|
||||
echo "[INFO] Updating existing CONFIG_GOLANG_EXTERNAL_BOOTSTRAP_ROOT..."
|
||||
sed -i "s|^CONFIG_GOLANG_EXTERNAL_BOOTSTRAP_ROOT=.*|CONFIG_GOLANG_EXTERNAL_BOOTSTRAP_ROOT=\"${LATEST_PATH}\"|" "$CONFIG_FILE"
|
||||
else
|
||||
echo "[INFO] Adding CONFIG_GOLANG_EXTERNAL_BOOTSTRAP_ROOT..."
|
||||
echo "CONFIG_GOLANG_EXTERNAL_BOOTSTRAP_ROOT=\"${LATEST_PATH}\"" >> "$CONFIG_FILE"
|
||||
fi
|
||||
|
||||
# --- Verify result ---
|
||||
echo
|
||||
echo "[SUCCESS] Go path updated in .config:"
|
||||
grep 'CONFIG_GOLANG_EXTERNAL_BOOTSTRAP_ROOT' "$CONFIG_FILE"
|
||||
|
||||
echo
|
||||
echo "========================================"
|
||||
echo "✅ Go path update complete!"
|
||||
echo "========================================"
|
||||
echo
|
||||
echo "👉 If you wish to override manually, edit .config and change:"
|
||||
echo " CONFIG_GOLANG_EXTERNAL_BOOTSTRAP_ROOT=\"/usr/lib/go-X.XX/\""
|
||||
echo
|
||||
Reference in New Issue
Block a user