eccodes/data/download.sh

122 lines
3.0 KiB
Bash
Executable File

#!/bin/sh
usage ()
{
prog=`basename $0`
echo "Usage: $prog [-v] [-c] data_dir"
echo
echo "-v verbose"
echo "-c clean downloaded files"
echo "-h prints this help message"
echo
}
VERBOSE=0
CLEAN=0
while :
do
case "$1" in
-h) usage ; exit 0;;
-v) VERBOSE=1
echo "Running with verbose setting"
;;
-c) CLEAN=1
echo "Cleaning downloaded files"
;;
--) shift ; break ;;
-*) usage ; exit 0;;
*) break;;
esac
shift
done
DATA_DIR=$1
if [ -z "$DATA_DIR" ]; then
echo "Error: No directory specified." 2>&1
usage
exit 1
fi
grib_files=`cat $DATA_DIR/grib_data_files.txt`
tigge_files=`cat $DATA_DIR/tigge/tigge_data_files.txt | sed -e 's:^:tigge/:'`
bufr_files=`cat $DATA_DIR/bufr/bufr_data_files.txt $DATA_DIR/bufr/bufr_ref_files.txt | sed -e 's:^:bufr/:'`
metar_files=`cat $DATA_DIR/metar/metar_data_files.txt $DATA_DIR/metar/metar_ref_files.txt | sed -e 's:^:metar/:'`
gts_files=`cat $DATA_DIR/gts/gts_data_files.txt $DATA_DIR/gts/gts_ref_files.txt | sed -e 's:^:gts/:'`
files="$grib_files $tigge_files $bufr_files $metar_files $gts_files"
if [ $CLEAN -eq 1 ]; then
for f in $files; do
rm -f $f
rm -f ".downloaded"
done
exit 0
fi
# Check if all downloads are already done
if [ -f "${DATA_DIR}/.downloaded" ]; then
if [ $VERBOSE -eq 1 ]; then
echo "All downloads are already done. Exiting."
fi
exit 0
fi
[ -d "${DATA_DIR}/tigge" ] || mkdir "${DATA_DIR}/tigge"
TIMEOUT_SECS=15
# Decide what tool to use to download data
DNLD_PROG=""
if command -v wget >/dev/null 2>&1; then
PROG=wget
OPTIONS="--tries=1 --timeout=$TIMEOUT_SECS -nv -q -O"
if [ $VERBOSE -eq 1 ]; then
OPTIONS="--tries=1 --timeout=$TIMEOUT_SECS -nv -O"
fi
DNLD_PROG="$PROG $OPTIONS"
fi
if command -v curl >/dev/null 2>&1; then
PROG=curl
OPTIONS="--connect-timeout $TIMEOUT_SECS --silent --show-error --fail --output"
if [ $VERBOSE -eq 1 ]; then
OPTIONS="--connect-timeout $TIMEOUT_SECS --show-error --fail --output"
fi
DNLD_PROG="$PROG $OPTIONS"
fi
if test "x$DNLD_PROG" = "x"; then
echo "Cannot find tool to transfer data from download server. Aborting." 1>&2
exit 1
fi
download_URL="http://download.ecmwf.org"
cd ${DATA_DIR}
echo "Checking data files for testing..."
downloading=0
for f in $files; do
# If we haven't already got the file, download it
if [ ! -f "$f" ]; then
if [ $VERBOSE -eq 1 ]; then
echo "$DNLD_PROG $f ${download_URL}/test-data/grib_api/data/$f"
fi
if [ $downloading = 0 ]; then
echo "Downloading..."
downloading=1
fi
$DNLD_PROG $f ${download_URL}/test-data/grib_api/data/$f
if [ $? -ne 0 ]; then
echo
echo "Failed to download file \"$f\" from \"${download_URL}\"" 2>&1
echo "Aborting" 2>&1
exit 1
fi
if [ $VERBOSE -eq 1 ]; then
echo "Downloaded $f ..."
fi
fi
done
# Add a file to indicate we've done the download
touch .downloaded
echo "Completed."