-# retrieve weather information on the console
-# Usage example: 'weather LOWG'
-weather() {
- emulate -L zsh
- [[ -n "$1" ]] || {
- print 'Usage: weather <station_id>' >&2
- print 'List of stations: http://en.wikipedia.org/wiki/List_of_airports_by_ICAO_code'>&2
- return 1
- }
-
- 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"
-
- [[ -d ${DIR} ]] || {
- print -n "Creating ${DIR}: "
- mkdir ${DIR}
- print 'done'
- }
-
- print "Retrieving information for ${PLACE}:"
- print
- cd ${DIR} && wget -T 10 --no-verbose --output-file=$LOG --timestamping http://weather.noaa.gov/pub/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
-}
-