#!/bin/bash

set -e

while getopts "lek:i:" flag; do
  case "${flag}" in
    l)
      procflag=--load-trace
      ;;
    e)
      do_edit=1
      ;;
    k)
      only_kind=$OPTARG
      ;;
    i)
      only_impna=$OPTARG
      ;;
  esac
done

in_fudi=$HOME/ernad/testy
ou_fudi=$HOME/ernad/opt/testy
style_fudi=$HOME/ernad/style
bin=/usr/bin

set -e

## sheets that we need to test
declare -A sheets
## filename extensions per sheet
declare -A exshis

## first phase of development. do repis only. In this case, we have a
## static set of stylesheets to test. The only difference per file is
## the impna

## needs to check against etc/nitpo.ini
## this is still pre-empro
sheets['mail_text']='email_text_issue.xslt.xml'
exshis['mail_text']='.txt'
sheets['mail_html']='email_html_issue.xslt.xml'
exshis['mail_html']='.html'
sheets['screen']='papers_screen.xslt.xml'
exshis['screen']='.html'
sheets['screen']='papers_screen.xslt.xml'
exshis['screen']='.html'
sheets['mail_text']='email_text_issue.xslt.xml'
exshis['mail_text']='.txt'

## extensions per sheet
sheets['screen']='papers_screen.xslt.xml'

## get a repis victim to work on
get_repis() {
  local repcode=$1
  local issuedate=$2
  impna="${repcode%%-*}"
  impna=`echo $repcode | cut -d- -f1`
  year=${issuedate:0:4}
  bafi=${repcode}_${issuedate}.amf.xml
  tmp_fufi=/tmp/$bafi.gz
  issues_redi=ernad/var/$impna/export/issues
  issues_redi=$issues_redi/$repcode/$year
  remote=$issues_redi/$issuedate.amf.xml.gz
  $bin/rsync -va ernad@$impna:$remote $tmp_fufi
  $bin/zcat $tmp_fufi > $in_fudi/$bafi
  $bin/touch -f $tmp_fufi $in_fudi/$bafi
}

get_mails() {
  ## not sure if we need corrseponding subscriptions for this job
  cd ~/ernad/testy
  /usr/bin/scp ernad@nep:profiles/ca/deloitte/jenge.xml nep_jenge.xml
  /usr/bin/scp ernad@bims:profiles/org/vifm/kathryn.rough.xml bims_rough.xml
}

## delete empty files
$bin/find $in_fudi -empty -delete

# get_repis 'nep-big' '2024-12-16'

declare -A doc_banas
declare -A pro_banas
for fufi in $in_fudi/*.xml; do
  bana="${fufi##*/}"
  # echo $bana
  impna="${bana%%-*}"
  if [ $impna == $bana ]; then
    ## could also be found by looking for .xml
    ## but not .amf.xml
    ## no impna + '-', thus nitpo file
    profile_impna="${bana%%_*}"
    pro_banas[$bana]=$profile_impna
    continue
  fi
  doc_banas[$bana]=$impna
done

for pro_bana in ${!pro_banas[@]}; do
  pro_impna="${pro_bana%%_*}"
  if [ $only_impna != $pro_impna ]; then
    continue
  fi
  for doc_bana in ${!doc_banas[@]}; do
    doc_impna="${doc_bana%%-*}"
    if [[ $doc_impna != $pro_impna ]]; then
      continue
    fi
    impna=$pro_impna
    pro_root="${pro_bana#*_}"
    ## remove .xml
    pro_root=${pro_root::-4}
    #echo $pro_root
    in_root=${doc_bana::-8}_${pro_root}
    pro_test_fufi=$ou_fudi/$in_root.xml
    # echo $pro_test_fufi
    rm -f $pro_test_fufi
    ~/nitpo/bin/inject $in_fudi/$doc_bana $in_fudi/$pro_bana > $pro_test_fufi
    ## repis head
    out_fufi=$ou_fudi/${in_root}_head.xml
    cd ~/ernad/style/$impna
    /usr/bin/xsltproc $procflag repis_head.xslt.xml $pro_test_fufi > $out_fufi
    if [ $do_edit ]; then
      emacs $out_fufi
    fi
  done
done
exit

for bana in ${!doc_banas[@]}; do
  echo bana is $bana
  echo ${doc_banas[$bana]}
  continue
  xml_fufi=$in_fudi/$bana
  impna=${doc_banas[$bana]}
  cd $style_fudi/$impna
  for kind in ${!sheets[@]}; do
    shibana=${sheets[$kind]}
    ## would be nice to have an extension
    shina=${shibana::-9}
    out_fufi=$ou_fudi/${shina}_${impna}${exshis[$kind]}
    echo I run $shibana on $xml_fufi
    $bin/xsltproc $shibana $xml_fufi > $out_fufi
    #if [ -z $out_fufi ]; then
    #    echo $out_fufi is empty
    #    exit
    #fi
    echo "I wrote $out_fufi"
  done
done

## work on the
