# retrieve weather information on the console
# Usage example: 'weather LOWG'

emulate -L zsh

if [[ -z "$1" ]]; then
    print 'Usage: weather <station_id>'
    print \
  'List of stations: http://en.wikipedia.org/wiki/List_of_airports_by_ICAO_code'
    return 0
fi

local VERBOSE="yes"    # TODO: Make this a command line switch

local ODIR=`pwd`
local PLACE="${1:u}"
local DIR="${HOME}/.weather"
local LOG="${DIR}/log"

if ! [[ -d ${DIR} ]]; then
    print -n "Creating ${DIR}: "
    mkdir ${DIR}
    print 'done'
fi

print "Retrieving information for ${PLACE}:"
print
cd ${DIR} && \
  wget -T 10 --no-verbose --output-file=$LOG --timestamping \
       https://tgftp.nws.noaa.gov/data/observations/metar/decoded/$PLACE.TXT

if [[ $? -eq 0 ]]; then
    if [[ -n "$VERBOSE" ]] ; then
        cat ${PLACE}.TXT
    else
        DATE=$(grep 'UTC' ${PLACE}.TXT | sed 's#.* /##')
        TEMPERATURE=$(awk '/Temperature/ {
                             print $4" degree Celcius / " $2" degree Fahrenheit"
                           }' ${PLACE}.TXT | tr -d '(')
        echo "date: $DATE"
        echo "temp:  $TEMPERATURE"
    fi
else
    print "There was an error retrieving the weather information for $PLACE" >&2
    cat $LOG
    cd $ODIR
    return 1
fi
cd $ODIR
