#!/bin/bash

set -euo pipefail

version=$(siril --version | awk '{print $2}')
ext=fits

## Working directory is current working directory.
## Could be somewhere else, but not tested
base=$PWD
## Those RAW source images could be somewhere else
session_src=(${base}/20220204 ${base}/20220303)
flat_src=${base}/flats
bias_src=${base}/biases

count=1

## (Pre-)Process the biases and flats
siril-cli -i ~/.config/siril/siril.cfg -s - <<ENDSIRIL
requires $version
setext $ext
cd $bias_src
convert bias -out=${base}/process

cd $flat_src
convert flat -out=${base}/process

cd ${base}/process
stack bias rej 3 3 -nonorm
preprocess flat -bias=bias_stacked
stack pp_flat rej 3 3 -norm=mul

close
ENDSIRIL

## Pre-Process in the subfolders (sessions, with different darks)
for d in ${session_src[*]}; do
  session=$(basename $d)
  parent_d=$(dirname $d)
  
  if [ ! -d ${base}/process/${session} ]; then
    mkdir -p ${base}/process/${session}
  fi
  ln -sf ${base}/process/pp_flat_stacked.fits ${base}/process/${session}/
  
  siril-cli -i ~/.config/siril/siril.cfg -s - <<ENDSIRIL
requires $version
setext $ext

cd $d/darks
convert dark -out=${base}/process/${session}

cd $d/lights
convert light -start=$count -out=${base}/process/${session}

cd ${base}/process/${session}
stack dark rej 3 3 -nonorm

preprocess light -dark=dark_stacked -flat=pp_flat_stacked -cfa -equalize_cfa -debayer

close
ENDSIRIL
  count=$(( $count + $(ls ${base}/process/${session}/pp_light_*.fits | wc -l) ))
  mv ${base}/process/${session}/pp_light_*.fits  ${base}/process/
done

## Register and stack
siril-cli -i ~/.config/siril/siril.cfg -s - <<ENDSIRIL
requires $version
setext $ext
cd $base/process
register pp_light
stack r_pp_light rej 3 3 -norm=addscale -output_norm -out=$base
ENDSIRIL
