ansiweather

Weather in terminal, with ANSI colors and Unicode symbols
Log | Files | Refs | README | LICENSE

commit 0417867674fabe1f7d385d25be7ab626a6db42a1
parent e48dee31112adc24f7d2acd8b6dc01554fbd6a26
Author: Frederic Cambus <fcambus@users.sourceforge.net>
Date:   Thu, 20 Aug 2015 23:47:00 +0200

Merge pull request #66 from lucc/speed

Parse command line before setting options.
Diffstat:
Mansiweather | 108+++++++++++++++++++++++++++++++++++++++++++++----------------------------------
1 file changed, 61 insertions(+), 47 deletions(-)

diff --git a/ansiweather b/ansiweather @@ -40,7 +40,59 @@ fetch_cmd=$(get_config "fetch_cmd" || echo "curl -s") -###[ Check if bc and jq are installed ]####################################### +###[ Parse the command line ]################################################## + +# Set all variables that can be set from the command line to an empty value. +location= +units= +symbols= +forecast= +forecast= +daylight= + +# Get config options from command line flags +while getopts l:u:s:f:Fd:h option +do + case "${option}" + in + l) location=${OPTARG};; + u) units=${OPTARG};; + s) symbols=${OPTARG};; + f) forecast=${OPTARG};; + F) forecast="5";; + d) daylight=${OPTARG};; + h) usage=true;; + esac +done + + + +#### [ Display usage ]######################################################### + +if [ "$usage" = true ] +then + printf "%s\n" \ + "" \ + "AnsiWeather 1.02 (c) by Frederic Cambus 2013-2015" \ + "" \ + "USAGE: ansiweather [options]" \ + "" \ + "Options are :" \ + "" \ + " -l Specify location" \ + " -u Specify unit system to use (metric or imperial)" \ + " -s Toggle symbol display" \ + " -f Toggle forecast mode for the specified number of upcoming days" \ + " -F Toggle forecast mode for the next five days" \ + " -d Toggle daylight data display" \ + " -h Display usage" \ + "EXAMPLES: ansiweather -l Moscow,RU -u metric -s true -f 5 -d true" + exit +fi + + + +###[ Check if bc and jq are installed ]######################################## jqpath=$(which jq) if [ "$jqpath" = "" ] @@ -58,7 +110,7 @@ fi -###[ Auto-Location Logic ]#################################################### +###[ Auto-Location Logic ]##################################################### geo_api_proto=$(get_config "geo_api_proto" || echo "http") geo_api_url=$(get_config "geo_api_url" || echo "www.telize.com/geoip") #geo location service @@ -83,64 +135,26 @@ auto_locate() { fi } +###[ Set options that are not set from command line ]########################## + # Location : example "Moscow,RU" -location=$(get_config "location" || auto_locate || echo "Moscow,RU") +[ -z "$location" ] && location=$(get_config "location" || auto_locate || echo "Moscow,RU") # System of Units : "metric" or "imperial" -units=$(get_config "units" || echo "metric") +[ -z "$units" ] && units=$(get_config "units" || echo "metric") # Display symbols : "true" or "false" (requires an Unicode capable display) -symbols=$(get_config "symbols" || echo true) +[ -z "$symbols" ] && symbols=$(get_config "symbols" || echo true) # Show forecast : How many days, example "5". "0" is standard output -forecast=$(get_config "forecast" || echo 0) +[ -z "$forecast" ] && forecast=$(get_config "forecast" || echo 0) # Show daylight : "true" or "false" -daylight=$(get_config "daylight" || echo false) +[ -z "$daylight" ] && daylight=$(get_config "daylight" || echo false) dateformat=$(get_config "dateformat" || echo "%a %b %d") timeformat=$(get_config "timeformat" || echo "%b %d %r") -# Or get config options from command line flags -while getopts l:u:s:f:Fd:h option -do - case "${option}" - in - l) location=${OPTARG};; - u) units=${OPTARG};; - s) symbols=${OPTARG};; - f) forecast=${OPTARG};; - F) forecast="5";; - d) daylight=${OPTARG};; - h) usage=true;; - esac -done - - - -#### [ Display usage ]######################################################### - -if [ "$usage" = true ] -then - printf "%s\n" \ - "" \ - "AnsiWeather 1.02 (c) by Frederic Cambus 2013-2015" \ - "" \ - "USAGE: ansiweather [options]" \ - "" \ - "Options are :" \ - "" \ - " -l Specify location" \ - " -u Specify unit system to use (metric or imperial)" \ - " -s Toggle symbol display" \ - " -f Toggle forecast mode for the specified number of upcoming days" \ - " -F Toggle forecast mode for the next five days" \ - " -d Toggle daylight data display" \ - " -h Display usage" \ - "EXAMPLES: ansiweather -l Moscow,RU -u metric -s true -f 5 -d true" - exit -fi - #### [ Colors and characters ]#################################################