|
2 | 2 | set -euo pipefail |
3 | 3 |
|
4 | 4 | MIRROR_FILE="./mirrors_list.yaml" |
| 5 | +MIRROR_URL="https://raw.githubusercontent.com/MiravaOrg/Mirava/refs/heads/main/mirrors_list.yaml" |
| 6 | + |
| 7 | +# Check if curl is installed |
| 8 | +if ! command -v curl &> /dev/null; then |
| 9 | + echo "❌ Error: curl is not installed." |
| 10 | + echo "Please install curl first." |
| 11 | + exit 1 |
| 12 | +fi |
| 13 | + |
| 14 | +# Check if yq is installed |
| 15 | +if ! command -v yq &> /dev/null; then |
| 16 | + echo "❌ Error: yq is not installed." |
| 17 | + echo "Please install yq from: https://github.com/mikefarah/yq/" |
| 18 | + exit 1 |
| 19 | +fi |
| 20 | + |
| 21 | +# Check if mirrors_list.yaml exists, if not fetch it |
| 22 | +if [[ ! -f "$MIRROR_FILE" ]]; then |
| 23 | + echo "⚠️ mirrors_list.yaml not found. Downloading from repository..." |
| 24 | + if curl -fsSL "$MIRROR_URL" -o "$MIRROR_FILE"; then |
| 25 | + echo "✅ Successfully downloaded mirrors_list.yaml" |
| 26 | + else |
| 27 | + echo "❌ Failed to download mirrors_list.yaml" |
| 28 | + exit 1 |
| 29 | + fi |
| 30 | +fi |
5 | 31 |
|
6 | 32 | declare -A PACKAGE_PATHS=( |
7 | 33 | ["Ubuntu"]="ubuntu" |
@@ -43,7 +69,13 @@ for idx in $(seq 0 $(yq e '.mirrors | length - 1' "$MIRROR_FILE")); do |
43 | 69 |
|
44 | 70 | for j in $(seq 0 $((package_count - 1))); do |
45 | 71 | package=$(yq e ".mirrors[$idx].packages[$j]" "$MIRROR_FILE") |
46 | | - path=${PACKAGE_PATHS[$package]:-} |
| 72 | + |
| 73 | + # Safely get path with set -u enabled |
| 74 | + if [[ -v PACKAGE_PATHS["$package"] ]]; then |
| 75 | + path=${PACKAGE_PATHS["$package"]} |
| 76 | + else |
| 77 | + path="" |
| 78 | + fi |
47 | 79 |
|
48 | 80 | if [[ "$package" == "Docker Registry" ]]; then |
49 | 81 | check_docker_registry "$base_url" |
|
0 commit comments