52 lines
1.6 KiB
Bash
Executable File
52 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
OUT_DIR="${WATERMAPS_GEOFABRIK_DIR:-${SEA_COMPASS_GEOFABRIK_DIR:-data/geofabrik}}"
|
|
GERMANY_BASE_URL="${WATERMAPS_GEOFABRIK_GERMANY_BASE_URL:-${SEA_COMPASS_GEOFABRIK_GERMANY_BASE_URL:-https://download.geofabrik.de/europe/germany}}"
|
|
EUROPE_BASE_URL="${WATERMAPS_GEOFABRIK_EUROPE_BASE_URL:-${SEA_COMPASS_GEOFABRIK_EUROPE_BASE_URL:-https://download.geofabrik.de/europe}}"
|
|
|
|
DEFAULT_REGIONS=(
|
|
germany
|
|
netherlands
|
|
)
|
|
|
|
regions=("$@")
|
|
if [[ "${#regions[@]}" -eq 0 ]]; then
|
|
regions=("${DEFAULT_REGIONS[@]}")
|
|
fi
|
|
|
|
mkdir -p "$OUT_DIR"
|
|
|
|
for region in "${regions[@]}"; do
|
|
file_name="${region}-latest.osm.pbf"
|
|
case "$region" in
|
|
germany|netherlands)
|
|
url="${EUROPE_BASE_URL}/${file_name}"
|
|
;;
|
|
*)
|
|
url="${GERMANY_BASE_URL}/${file_name}"
|
|
;;
|
|
esac
|
|
target="${OUT_DIR}/${file_name}"
|
|
checksum_target="${target}.md5"
|
|
|
|
echo "Downloading $url.md5"
|
|
curl --fail --location --retry 5 --retry-delay 5 --output "$checksum_target" "${url}.md5"
|
|
|
|
expected_checksum="$(awk 'NR == 1 { print $1 }' "$checksum_target")"
|
|
if [[ -f "$target" ]] && [[ "$(md5sum "$target" | awk '{ print $1 }')" == "$expected_checksum" ]]; then
|
|
echo "$(basename "$target"): already current"
|
|
continue
|
|
fi
|
|
|
|
echo "Downloading $url"
|
|
curl --fail --location --continue-at - --retry 5 --retry-delay 5 --output "$target" "$url"
|
|
|
|
actual_checksum="$(md5sum "$target" | awk '{ print $1 }')"
|
|
if [[ -z "$expected_checksum" || "$actual_checksum" != "$expected_checksum" ]]; then
|
|
echo "Checksum verification failed for $target" >&2
|
|
exit 1
|
|
fi
|
|
echo "$(basename "$target"): OK"
|
|
done
|