#!/usr/bin/bash

# Every test has same number of SCCs/chain, actions/state and effects/action
num_scc=(5)
num_actions=(5)
num_effects=(5)

output_folder="./chained"
generator=`realpath ./generate_chained`

function main {
  # Compile the generator
  make clean > /dev/null
  make > /dev/null

  # Generate the requested domains (var_states, var_chains)
  generate_domains "$1"
}

function generate_domains {
  mkdir -p $output_folder/$1
  rm -f $output_folder/$1/*.mdp # in case the folder already existed and was not empty

  if [[ $1 == *"var_states"* ]]; then
    echo "variable number of states_per_SCC"
    template_name='${n}.mdp'
    num_chains=(24)
    num_states=(100000 200000 300000 400000 500000 600000 700000 800000 900000 1000000)
  elif [[ $1 == *"var_chains"* ]]; then
    echo "variable number of chains"
    template_name='${n_c}.mdp'
    num_chains=(2 4 6 8 10 12 14 16 18 20 22 24 26 28)
    num_states=(500000)
  else
    echo "no valid argument"
    exit 1
  fi

  cd "$output_folder/$1"
  for n in ${num_states[*]}; do
    for n_c in ${num_chains[*]}; do
      for n_scc in ${num_scc[*]}; do
        n_sps=$((n / (n_c * n_scc)))
        for n_a in ${num_actions[*]}; do
          for n_e in ${num_effects[*]}; do
            echo "Generating MDP for n_c=$n_c, n_scc=$n_scc, n_sps=$n_sps, n_a=$n_a, n_e=$n_e"
            output_name=`eval "echo ${template_name}"`
            $generator $n_c $n_scc $n_sps $n_a $n_e > "$output_name"
          done
        done
      done
    done
  done
  cd > /dev/null
}

main "$@"
