From 4fb16a6998ea6bd33f6e0cba51d541d146370531 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Tue, 19 Apr 2016 17:34:11 +0200 Subject: add support for ~/.config/geolocation and /etc/geolocation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- metar | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/metar b/metar index b9c68c8..4953882 100755 --- a/metar +++ b/metar @@ -1,8 +1,10 @@ #!/bin/sh +set -e + usage () { - echo "usage: $0 (get | print | set STATION | list [PREFIX] | closest LATITUDE LONGITUDE [LIST])" + echo "usage: $0 (get | print | set STATION | list [PREFIX] | closest [LATITUDE LONGITUDE] [LIST])" } get_station () @@ -20,6 +22,27 @@ get_station () echo "$icao" } +get_location () +{ + geo="" + if test -f ~/.config/geolocation; then + geo="$(cat ~/.config/geolocation | head -n 1)" + geof=~/.config/geolocation + elif test -f /etc/geolocation; then + geo="$(cat /etc/geolocation | head -n 1)" + geof=/etc/geolocation + fi + if test -z "$geo"; then + echo 'No location has been specificed or configured.' >&2 + exit 1 + fi + if ! test $(printf '%s\n' $geo | wc -l) = 2; then + echo "Invalid geolocation configuration (${geof})." >&2 + exit 1 + fi + echo "$geo" +} + list_stations () { file="$(mktemp)" @@ -45,8 +68,8 @@ get_closest () location="$(echo "$line" | cut -d ')' -f 2 | cut -d ' ' -f 2,3)" latitude="$(echo "$location" | cut -d ' ' -f 1)" longitude="$(echo "$location" | cut -d ' ' -f 2)" - north="$(echo "$latitude" | grep 'S' > /dev/null; echo $?)" - east="$(echo "$longitude" | grep 'W' > /dev/null; echo $?)" + north="$(set +e; echo "$latitude" | grep 'S' > /dev/null; echo $?)" + east="$(set +e; echo "$longitude" | grep 'W' > /dev/null; echo $?)" latitude="$(echo "$latitude" | tr -d NSEW | sed 's/-/ /g')" longitude="$(echo "$longitude" | tr -d NSEW | sed 's/-/ /g')" best="$(python3 - $north "$latitude" $east "$longitude" "$1" "$2" "$icao" $best <