#!/bin/bash

######################################################################
#
# Test Bash script for creating sample multiple png output
#
# Author: Bernard Miville
#
# Created: 1 March 2017
#
######################################################################

set -u
set -e

# Fonts for help

NORM=$(tput sgr0)
BOLD=$(tput bold)
REV=$(tput smso)
RED=$(tput setaf 1)

# Functions

usage(){
# Help
  cat <<-EOF
  ${BOLD}${RED}Usage:${NORM} $0 [<options>]
 
  ${BOLD}${RED}Options:
  ${NORM}-h,--help                      Shows this message, then exits.
  ${NORM}-c,--csv <filename>            Produces a station list and save to a csv file (filename, including path as needed), then exits.
  ${NORM}-f,--from <date>               Initial date (YYYYMMDD) (e.g. 20170128)
  ${NORM}-t,--to <date>                 End date (YYYYMMDD) (e.g. 20170228)
  ${NORM}-s,--stations <station id>     Station ID as stored in the CliDEsc database station table (e.g. 76021)
  ${NORM}-l,--language <language>       Language using ISO-639-2 code (e.g. eng for English, smo for Samoan)
  ${NORM}-p,--path <output directory>   Output path where script artifacts are saved (e.g. /var/www/html/clidesc/ouput/NZ/2679)
  ${NORM}--country <country>            Country of the product (e.g. WS for Samoa)
  ${NORM}--chain <chain list>           Provides a list of chained stations (76201:76212,76212:76301,76802:79031)
  ${NORM}-v,--version <CliDEsc version> CliDEsc version number used to know if teh script runs in the new or old CliDEsc
EOF
  exit 0
}

stations(){
# Create a list of stations    
  echo $(message "INFO" "Station csv file creation started: $1")
  echo 'Name,ID,Lat,Lon,Country,Type' > $1
  echo '"Lata AWS",76025,-13.75,-172.5333,"WS","AWS"' >> $1
  echo '"Aleisa AWS",76217,-13.853,-171.852,"WS","AWS"' >> $1
  echo '"Avao AWS",76024,-13.448,-172.362,"WS","AWS"' >> $1
  echo '"Apia Samoa NTC AWS",76226,-13.8267,-171.7611,"WS","AWS"' >> $1
  echo '"Mt Fiamoe AWS",76224,-13.9305,-171.7958,"WS","AWS"' >> $1
  echo '"Fagalii Airport AWS",76222,-13.883,-171.7386,"WS","AWS"' >> $1
  echo '"Cape Tapaga AWS",76221,-14.045,-171.441,"WS","AWS"' >> $1
  echo '"Faleolo Apt AWS",76223,-13.8367,-171.983,"WS","AWS"' >> $1
  echo '"Tafitoala AWS",76227,-14.008,-171.815,"WS","AWS"' >> $1
  echo '"Asau AWS",76023,-13.5058,-172.63,"WS","AWS"' >> $1
  echo '"Le Piu Tai AWS",76028,-13.4613,-172.3888,"WS","AWS"' >> $1
  echo '"Maota Int Airport AWS",76029,-13.7485,-172.2521,"WS","AWS"' >> $1
  echo '"Faleolo Int East AWS",76228,-13.8357,-171.9812,"WS","AWS"' >> $1
  echo '"Faleolo Int West AWS",76229,-13.833,-172.0126,"WS","AWS"' >> $1
  echo '"Manono AWS",76230,-13.8526,-172.1005,"WS","AWS"' >> $1
  echo '"Alafua AWS",76216,-13.8593,-171.7935,"WS","AWS"' >> $1
  echo '"Nuu AWS",76215,-13.8345,-171.8345,"WS","AWS"' >> $1
  echo '"Apia AWS",76219,-13.8202,-171.7755,"WS","AWS"' >> $1
  echo '"Nafanua AWS",76225,-13.858,-171.7622,"WS","AWS"' >> $1
  echo '"Togitogiga AWS",76232,-14.0435,-171.748,"WS","AWS"' >> $1
  echo '"Le Mafa AWS",76233,-13.9613,-171.5955,"WS","AWS"' >> $1
  echo '"Mt Talu AWS",76030,-13.5336,-172.764,"WS","AWS"' >> $1
  echo '"Salailua AWS",76038,-13.71,-172.6,"WS","AWS"' >> $1
  echo '"Vaiaata AWS",76046,-13.6301,-172.259,"WS","AWS"' >> $1
  echo '"Saoluafata Uta AWS",76241,-13.8841,-171.607,"WS","AWS"' >> $1
  echo '"Lufilufi AWS",76231,-13.8757,-171.5974,"WS","AWS"' >> $1
  echo '"Cape Nuutoi AWS",76220,-14.033,-171.767,"WS","AWS"' >> $1
  echo '"Afiamalu AWS",76021,-13.9084,-171.782,"WS","AWS"' >> $1
  echo '"SAMOA - PAGO PAGO AERO",6059,-14.333,-170.717,"WS","Synop"' >> $1
  echo '"Nuusuatia",75906,-13.9833,-171.8333,"WS","Rainfall"' >> $1
  echo '"Faleseela",75919,-13.93,-171.96,"WS","Rainfall"' >> $1
  echo '"Lepa",75920,-14.0397,-171.5236,"WS","Rainfall"' >> $1
  echo '"Tanumapua",75923,-13.861,-171.8315,"WS","Rainfall"' >> $1
  echo '"Savaia",75926,-13.933,-171.95,"WS","Rainfall"' >> $1
  echo '"Sataoa",75927,-13.967,-171.85,"WS","Rainfall"' >> $1
  echo '"Taga",76009,-13.7833,-172.5,"WS","Rainfall"' >> $1
  echo '"Sili",76014,-13.7597,-172.3708,"WS","Rainfall"' >> $1
  echo '"Vaipu-a",76017,-13.7,-172.5833,"WS","Rainfall"' >> $1
  echo '"Lalomalava",76019,-13.7035,-172.203,"WS","Rainfall"' >> $1
  echo '"Vaipouli",76032,-13.45,-172.3667,"WS","Rainfall"' >> $1
  echo '"Moamoa",76207,-13.85,-171.783,"WS","Rainfall"' >> $1
  echo '"Lemafa",76208,-13.95,-171.588,"WS","Rainfall"' >> $1
  echo '"Lotofaga A.",76211,-14.0333,-171.55,"WS","Rainfall"' >> $1
  echo '"Alaoa",76214,-13.9167,-171.75,"WS","Rainfall"' >> $1
  echo '"Matautu Lefaga",75903,-13.95,-171.9167,"WS","Rainfall"' >> $1
  echo '"Falelatai",75902,-13.883,-172.017,"WS","Rainfall"' >> $1
  echo '"Vailoa Palauli",76027,-13.7524,-172.3099,"WS","Rainfall"' >> $1
  echo '"Fagamalo",76006,-13.4411,-172.354,"WS","Rainfall"' >> $1
  echo '"Saleilua Falealili",75921,-14.017,-171.678,"WS","Rainfall"' >> $1
  echo '"Matavai",76010,-13.4833,-172.4667,"WS","Rainfall"' >> $1
  echo '"Vaiaata",76008,-13.65,-172.217,"WS","Rainfall"' >> $1
  echo '"Samatau",75924,-13.9,-172.05,"WS","Rainfall"' >> $1
  echo '"Salelologa",76015,-13.7358,-172.2213,"WS","Rainfall"' >> $1
  echo '"Aopo",76022,-13.5425,-172.5233,"WS","Rainfall"' >> $1
  echo '"Samalaeulu",76013,-13.5208,-172.2769,"WS","Rainfall"' >> $1
  echo '"Ti avea Uta",75908,-14,-171.4833,"WS","Rainfall"' >> $1
  echo '"Sauniatu",75911,-13.9167,-171.6167,"WS","Rainfall"' >> $1
  echo '"Puapua",76016,-13.5863,-172.214,"WS","Rainfall"' >> $1
  echo '"Satupaitea",76005,-13.75,-172.317,"WS","Rainfall"' >> $1
  echo '"Fasitoo Uta",75901,-13.811,-171.939,"WS","Rainfall"' >> $1
  echo '"Neiafu",76031,-13.5692,-172.745,"WS","Rainfall"' >> $1
  echo '"Fatausi",76011,-13.6756,-172.178,"WS","Rainfall"' >> $1
  echo '"Fogasavaii",76018,-13.6792,-172.631,"WS","Rainfall"' >> $1
  echo '"Piula",75912,-13.8746,-171.597,"WS","Rainfall"' >> $1
  echo '"Laulii",76206,-13.862,-171.7,"WS","Rainfall"' >> $1
  echo '"Tanumalala",75931,-13.899,-171.939,"WS","Rainfall"' >> $1
  echo '"Savalalo",75922,-13.8309,-171.772,"WS","Rainfall"' >> $1
  echo '"Vaitele",75928,-13.8265,-171.804,"WS","Rainfall"' >> $1
  echo '"Lake Lanutoo",75929,-13.9111,-171.8194,"WS","Rainfall"' >> $1
  echo '"Tailematao",76033,-13.617,-172.267,"WS","Rainfall"' >> $1
  echo '"Sigaele",75930,-13.8942,-171.8756,"WS","Rainfall"' >> $1
  echo '"Afulilo",75925,-13.85,-171.78,"WS","Rainfall"' >> $1
  echo '"Falealupo",76003,-13.4952,-172.771,"WS","Rainfall"' >> $1
  echo '"Maasina Fagaloa",75904,-13.943,-171.556,"WS","Rainfall"' >> $1
  echo '"Saletele Fagaloa",75935,-13.9127,-171.555,"WS","Rainfall"' >> $1
  echo '"Fogapoa",76034,-13.6706,-172.18,"WS","Rainfall"' >> $1
  echo '"Ologogo Farm",76036,-13.5214,-172.418,"WS","Rainfall"' >> $1
  echo '"Salailua",76004,-13.7181,-172.592,"WS","Rainfall"' >> $1
  echo '"Mulivai Safata",75933,-13.9797,-171.7897,"WS","Rainfall"' >> $1
  echo '"Papaigalagala",75934,-13.8523,-171.751,"WS","Rainfall"' >> $1
  echo '"Vaitoomuli",76007,-13.75,-172.3,"WS","Rainfall"' >> $1
  echo '"Lefagaoalii Safune",76035,-13.4651,-172.417,"WS","Rainfall"' >> $1
  echo '"Leauva a Uta",75907,-13.8333,-171.9167,"WS","Rainfall"' >> $1
  echo '"Salani Falealili",75905,-14.0311,-171.609,"WS","Rainfall"' >> $1
  echo '"Vailoa Aleipata",75909,-14.0451,-171.439,"WS","Rainfall"' >> $1
  echo '"Falelima AR",76044,-13.5773,-172.7285,"WS","Rainfall"' >> $1
  echo '"Satuimalufilufi",75936,-13.8542,-172.059,"WS","Rainfall"' >> $1
  echo '"Papa Sataua",76020,-13.525,-172.73,"WS","Rainfall"' >> $1
  echo '"Vailoa.A AR",76048,-14.045,-171.438,"WS","Rainfall"' >> $1
  echo '"Ti avea Uta AR",76237,-13.9945,-171.4961,"WS","Rainfall"' >> $1
  echo '"Salani Falealili AR",76243,-14.0326,-171.61,"WS","Rainfall"' >> $1
  echo '"Leauva a Uta AR",76242,-13.8529,-171.8659,"WS","Rainfall"' >> $1
  echo '"Tuasivi Hospital Rain Gauge",76042,-13.6662,-172.1772,"WS","Rainfall"' >> $1
  echo '"Samalaeulu AR",76039,-13.5205,-172.2782,"WS","Rainfall"' >> $1
  echo '"Lefagaoalii AR",76040,-13.4705,-172.4171,"WS","Rainfall"' >> $1
  echo '"Aopo AR",76041,-13.5412,-172.5229,"WS","Rainfall"' >> $1
  echo '"Falelima",76002,-13.5773,-172.7285,"WS","Rainfall "' >> $1
  echo '"Letui AR",76045,-13.4855,-172.474,"WS","Rainfall"' >> $1
  echo '"Letui",76012,-13.4855,-172.474,"WS","Rainfall"' >> $1
  echo '"Asau AR",76240,-13.519,-172.645,"WS","Rainfall"' >> $1
  echo '"Sasina Primary School",76236,-13.4727,-172.4477,"WS","Rainfall"' >> $1
  echo '"Mt Le Pue AR",1320100,-13.9333,-171.75,"WS","Rainfall"' >> $1
  echo '"Matautu Falelatai",75937,-13.8971,-172.0071,"WS","Rainfall"' >> $1
  echo $(message "INFO" "Station csv file creation completed: $1")
  exit 0
}

message(){
# Create a list of stations    
  echo "$1: "$(date  +%Y"-"%m"-"%d" "%H":"%M":"%S)" - $2"
}

# Check options

if ! OPTS=$(getopt -o hc:f:t:s:l:p:w:v: -l help,csv:,from:,to:,stations:,language:,path:,country:,chain:,version: -- "$@"); then
  exit 1
fi

eval set -- "$OPTS"

while true; do
  case $1 in
    -h|--help) usage; shift ;;
    -c|--csv) stations $2; shift 2 ;;
    -f|--from) initialTime=$2; echo "initialTime: $2"; shift 2 ;;
    -t|--to) endTime=$2; echo "endTime: $2"; shift 2 ;;
    -l|--language) language=$2; echo "language: $2"; shift 2 ;;
    -s|--stations) stationID=$2; echo "stationID: $2"; shift 2 ;;
    -p|--path) outputPath=$(pwd); echo "outputPath: $(pwd)"; shift 2 ;;
    -w|--country) country=$2; echo "country: $2"; shift 2 ;;
    --chain) station_chain=$2; echo "station chain: $2"; shift 2 ;;
    -v|--version) version=$2; echo "version: $2"; shift 2 ;;
    --) shift ; break ;;
    *) $(message "ERROR" "No options provided") ; exit 1 ;;
  esac
done

# Main code

stationID="76021"

if [ -n "$stationID" ]; then

  IMAGE_1="FWI_moisture_${stationID}.png"
  IMAGE_2="FWI_meter_${stationID}.png"

  if wget "http://www.samet.gov.ws/climate/fwsys/${IMAGE_1}" -O "${outputPath}/${IMAGE_1}"; then
    message "INFO" "Image file retrieval succeeded: ${outputPath}/${IMAGE_1}"
  else
    message "ERROR" "Image file retrieval failed for: ${outputPath}/${IMAGE_1}"
      exit 1
  fi 

  if wget "http://www.samet.gov.ws/climate/fwsys/${IMAGE_2}" -O "${outputPath}/${IMAGE_2}"; then
    message "INFO" "Image file retrieval succeeded: ${outputPath}/${IMAGE_2}"
  else
    message "ERROR" "Image file retrieval failed for: ${outputPath}/${IMAGE_2}"
    exit 1
  fi 

else
  message "ERROR" "No station ID provided"
  usage
  exit 1
fi