mirror of https://github.com/ecmwf/eccodes.git
122 lines
3.0 KiB
Bash
Executable File
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."
|