#!/bin/bash

original_args=("$@")

SHORT=p:h
OPTS=$(getopt -a --options $SHORT -- "$@")
echo $OPTS
eval set -- "$OPTS"

while :
do
  case "$1" in
    -p )
      component="$2"
      shift 2
      ;;
    -h | --help)
      "Runs the appropriate Processor component using the -p flag, all other args are passed through"
      exit 2
      ;;
    --)
      shift;
      break
      ;;
    *)
      echo "Unexpected option: $1"
      ;;
  esac
done

printf "component is %s" "$component"

if [ "$component" = "Environment" ]; then
    processor_class="ProcessorEnvironment.py"
elif [ "$component" = "Deposition" ];then
    processor_class="ProcessorDeposition.py"
elif [ "$component" = "Survey" ];then
    processor_class="ProcessorSurveys.py"
elif [ "$component" = "Advisory" ];then
    processor_class="ProcessorAdvisory.py"
elif [ "$component" = "Scraper" ];then
    processor_class="ProcessorScraper.py"
elif [ "$component" = "Epidemiology" ];then
    processor_class="ProcessorEpidemiology.py"
else
    printf "component '%s' not recognised" "$component"
fi


# directory containing all environment
envs=/storage/app/EWS_prod/envs

# directory containing all custom python packages
bin=/storage/app/EWS_prod/code/

# provide custom python packages so they can be imported
flagdir=${bin}/flagdir/
epimodel=${bin}/epimodel/
advisory=${bin}/advisory_builder/
met_processing=${bin}/met_extractor_v2/
met_processor=${bin}/environmental_suitability/
plotting=${bin}/plotting/
post_processing=${bin}/post_processing/
source_gen=${bin}/source_gen/

export PYTHONPATH=$PYTHONPATH:$flagdir:$epimodel:$advisory:$met_processing:$met_processor:$plotting:$source_gen:$post_processing

# provide path to email credentials for logging

export EMAIL_CRED=${envs}/credentials/Cred_gmail.json

# activate conda environment of python modules so they can be imported
#TODO: Move conda_env from bin to envs
conda_env=${envs}/conda/py3EWS
source /storage/app/miniconda3/bin/activate ${conda_env}

# get path of this script (to point to files within the same git repo)
proc_path="$( dirname "$(readlink -f "$0" )" )"

# run the processor with all arguments
processor=${proc_path}/../coordinator/${processor_class}
printf "processor is %s\n\n" "$processor"
python  "${processor}" "${original_args[@]}"
exit_code=$?;

# deactivate conda environment
source /storage/app/miniconda3/bin/deactivate ${conda_env}

exit $exit_code;