#!/bin/bash

# status of the Swift Observatory for NDAYS starting YYYY-MM-DD
#
# dsSwift -d NDAYS {-a} {-h} [YYYY-MM-DD] 
# default for YYYY-MM-DD is today 
# default for NDAYS is 1
# -a .. "as flow timeline" [default is "pre-planned timeline"]
# 
# LAST REVISION: 25-January-2020
#-----------------------------------------------------------------------
HELP=;  NDAYS=1; PLANCHOICE=0; NMAX=30;
#-----------------------------------------------------------------------
URL="https://www.swift.psu.edu/operations/obsSchedule.php?"
#-----------------------------------------------------------------------
TF="OUT_dsSwift" TFh=$TF.html TFt=$TF.txt TFp=$TF.txtp
trap "[ -e $TFh ] && rm $TFh $TFt $TFp" EXIT
#-----------------------------------------------------------------------

while getopts d:ah OPTVAL
do
   case $OPTVAL in
        h) HELP=1;;
	d) NDAYS=$OPTARG;;
	a) PLANCHOICE=1;;
        *) echo "dsSwift -h for help"; exit -1;;
   esac
done
shift $((OPTIND-1))

if [ $HELP ];  then
	echo "	dsSwift [-d NDAYS] {-a} {-h} YYYY-MM-DD"
	echo "	Swift Observatory schedule for NDAYS starting YYYY-MM-DD"
	echo "	MM is 01..12, DD is 01..31; default: TODAY"
        echo "	-d default is NDAYS=1"
        echo '	-a .. "as flow timeline", default is "planned timeline"'
	exit 
fi

[ $# -gt 2 ] && { echo "dsSwift: too many parameters"; exit -1; }

#-----------------------------------------------------------------------
if [ $# -eq 0 ]; then 
   M=$(date "+%m");  Y=$(date "+%Y"); D=$(date "+%d")
   DATE=$(echo $Y-$M-$D)
else
  DATE=$1
fi
echo $DATE | grep -q "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" | 
[ $? -ne 0 ] && { echo "dsSwift: incorrect data format"; exit -1; }

[ $NDAYS -gt $NMAX ] && { echo "dsSwift: that many days! really?"; exit -1; }

#-----------------------------------------------------------------------

DAYS=$(seq $NDAYS)

for d in $DAYS;
do
    d=$((d-1))
    date=$(gdate -d "$DATE +$d days" '+%Y-%m-%d') #note used GNU date

    curl -s -o $TFh $URL"d=$date&a=$PLANCHOICE" 

		#get banner line
    banner=$(sed -n 's;\(.*<title>\)\([^<]*\)\(<.title>\);\2;p' OUT_dsSwift.html)
    echo $banner | grep -q "Choose Schedule"
    if [ $? -eq 0 ]; then
	echo "schedule for $date not posted; exiting"; exit -1
    else    
      dline; echo -e "\t\t$banner"; dline
    fi

    textutil -convert txt $TFh
    sed -ip '1,/Notes:/d' $TFt   #strip out lines to get to header and data table

				#extract header
    head -24 $TFt | gsed -n 'h;n;x;G;s/\n//gp' | gsed 's/\s//;s/\s *$/,/' | xargs | gsed 's/\s*//g;s/.$//;s/,/\t/g' > $TFp

				#extract data
    gsed '1,24d' $TFt | gsed 's/^\s*//;s/\s*$//;/^[ ]*$/d;$d' | gsed -n  '1~12{h;n;H;n;H;n;H;n;H;n;H;n;H;n;H;n;H;n;H;n;H;n;H;x;s/\n/\t/gp;}' >> $TFp

			#select key items to dsiplay; use column for pretty output
    awk -F"\t" '{$2=$4=$8=$9=$10=$11="";sub(/ /,"_",$1);gsub(/ /,"");print $1,$3,$5,$6,$7,$12}' OFS="\t" $TFp | column -t

    echo 
done