Spruce METAR. - annna - Annna the nice friendly bot. HTML git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/annna/ DIR Log DIR Files DIR Refs DIR Tags DIR README --- DIR commit 4b9dce6013820f08b1fda84acd9603a9f56817c2 DIR parent 906b16d25a5f76b1d4032aab59fbc5752ea1d712 HTML Author: eidolon <?> Date: Thu, 10 Oct 2024 06:24:54 -0400 Spruce METAR. Signed-off-by: Annna Robert-Houdin <annna@bitreich.org> Diffstat: M metar | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) --- DIR diff --git a/metar b/metar @@ -1,16 +1,20 @@ #!/bin/sh -if ! id=$(printf '%s\n' "$1" | grep '^[A-Za-z]\{4\}$'); then - if ! id=$(printf '%s\n' "$1" | grep '^[A-Za-z]\{3\}$'); then - printf '%s\n' "invalid ICAO 7910 airport code." - exit 1 - fi - id="$(grep ",${1}," /home/annna/bin/modules/airport-codes/data/airport-codes.csv \ - | head -n 1 \ - | cut -d',' -f 1)" - if [ -z "${id}" ]; then - printf '%s\n' "invalid ICAO 7910 airport code." - exit 1 +iata2icao() { + csv="/home/annna/bin/modules/airport-codes/data/airport-codes.csv" + awk -v IATA="$1" --csv 'BEGIN { IATA = toupper(IATA) } $10 == IATA { print $1; exit }' "$csv" +} + +if ! id=$(printf '%s\n' "$1" | grep '^[A-Za-z]\{3,4\}$'); then + printf '%s\n' "invalid IATA/ICAO code." + exit 1 +fi + +if [ "${#id}" = 3 ]; then + id=$(iata2icao "$id") + if [ -z "$id" ]; then + printf '%s\n' "invalid IATA code." + exit 1 fi fi @@ -24,4 +28,3 @@ if [ -z "$metar" ]; then fi printf '%s\n' "$metar" -