add scripts
This commit is contained in:
96
download-config.sh
Normal file
96
download-config.sh
Normal file
@@ -0,0 +1,96 @@
|
||||
#!/bin/bash
|
||||
# Download OpenWRT config.buildinfo, generate .config and run defconfig
|
||||
# Author: Zhe Yuan
|
||||
|
||||
set -e
|
||||
umask 022
|
||||
|
||||
# --- Check if inside OpenWRT source directory ---
|
||||
if [ ! -f "feeds.conf.default" ] || [ ! -d "package" ]; then
|
||||
echo "[ERROR] Must run inside OpenWRT root directory."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# --- Detect Git version ---
|
||||
VERSION=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
|
||||
VERSION="${VERSION#v}"
|
||||
IS_LATEST=false
|
||||
|
||||
if [ -z "$VERSION" ]; then
|
||||
BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
||||
if [[ "$BRANCH" =~ openwrt-([0-9]+\.[0-9]+) ]]; then
|
||||
PARTIAL_VERSION="${BASH_REMATCH[1]}"
|
||||
# Find latest patch tag
|
||||
LATEST_TAG=$(git tag -l "v${PARTIAL_VERSION}.*" | sort -V | tail -n1)
|
||||
if [ -z "$LATEST_TAG" ]; then
|
||||
echo "[ERROR] Cannot find latest tag for $PARTIAL_VERSION.*"
|
||||
exit 1
|
||||
fi
|
||||
VERSION="${LATEST_TAG#v}"
|
||||
IS_LATEST=true
|
||||
elif [[ "$BRANCH" == *SNAPSHOT* ]]; then
|
||||
VERSION="SNAPSHOT"
|
||||
else
|
||||
read -rp "Cannot detect version, input manually (e.g., 24.10.4 or SNAPSHOT): " VERSION
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "[INFO] OpenWRT version: $VERSION"
|
||||
|
||||
# --- Devices list ---
|
||||
# Format: Name Target FirmwareDevice
|
||||
DEVICES=(
|
||||
"Linksys_MX8500 qualcommax/ipq807x linksys_mx8500"
|
||||
"Cudy_TR3000_128MB mediatek/filogic cudy_tr3000-v1"
|
||||
"Cudy_TR3000_256MB mediatek/filogic cudy_tr3000-256mb-v1"
|
||||
)
|
||||
|
||||
echo "Available devices:"
|
||||
for i in "${!DEVICES[@]}"; do
|
||||
NAME=$(echo "${DEVICES[$i]}" | awk '{print $1}')
|
||||
echo " $i) $NAME"
|
||||
done
|
||||
|
||||
read -rp "Select device number: " DEV_INDEX
|
||||
if [[ -z "${DEVICES[$DEV_INDEX]}" ]]; then
|
||||
echo "[ERROR] Invalid selection."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# --- Extract device info ---
|
||||
read -r DEV_NAME DEV_TARGET DEV_FW <<<"${DEVICES[$DEV_INDEX]}"
|
||||
echo "[INFO] Selected device: $DEV_NAME"
|
||||
|
||||
# --- Construct URLs ---
|
||||
if [[ "$VERSION" == "SNAPSHOT" ]]; then
|
||||
CONFIG_URL="https://downloads.openwrt.org/snapshots/targets/$DEV_TARGET/config.buildinfo"
|
||||
FIRMWARE_URL="https://downloads.openwrt.org/snapshots/targets/$DEV_TARGET/openwrt-SNAPSHOT-$DEV_TARGET-$DEV_FW-squashfs-sysupgrade.bin"
|
||||
else
|
||||
CONFIG_URL="https://downloads.openwrt.org/releases/$VERSION/targets/$DEV_TARGET/config.buildinfo"
|
||||
FIRMWARE_URL="https://downloads.openwrt.org/releases/$VERSION/targets/$DEV_TARGET/openwrt-$VERSION-$DEV_TARGET-$DEV_FW-squashfs-sysupgrade.bin"
|
||||
fi
|
||||
|
||||
echo "[INFO] Config URL: $CONFIG_URL"
|
||||
echo "[INFO] Firmware URL: $FIRMWARE_URL"
|
||||
|
||||
# --- Download config.buildinfo ---
|
||||
echo "[INFO] Downloading config.buildinfo..."
|
||||
wget -q --show-progress -O ".config" "$CONFIG_URL"
|
||||
echo "[INFO] Saved as .config"
|
||||
|
||||
# --- Run make defconfig ---
|
||||
echo "[INFO] Running make defconfig..."
|
||||
make defconfig >/dev/null
|
||||
echo "[INFO] defconfig done."
|
||||
|
||||
# --- Check firmware existence ---
|
||||
if curl --head --silent --fail "$FIRMWARE_URL" >/dev/null; then
|
||||
echo "[INFO] Firmware exists: $FIRMWARE_URL"
|
||||
else
|
||||
echo "[WARN] Firmware not found or URL invalid."
|
||||
fi
|
||||
|
||||
# --- Print Firmware Selector URL ---
|
||||
TARGET_ESC=$(echo $DEV_TARGET | sed 's|/|%2F|g')
|
||||
FS_URL="https://firmware-selector.openwrt.org/?version=$VERSION&target=$TARGET_ESC&id=$DEV_FW"
|
||||
echo "[INFO] Check Installed Packages at: $FS_URL"
|
||||
Reference in New Issue
Block a user