#/bin/sh

# A POSIX variable
OPTIND=1

# Initialize our own variables:
tool=""
version=""

while getopts "h?v:t:p:" opt; do
  case "${opt}" in
  h|\?)
    echo "update_tools.sh -t toolname -v tool_version -p tool_previous_version"
    exit 0
    ;;
  v)
    version=${OPTARG}
    ;;
  p)
    prev_version=${OPTARG}
    ;;
  t)
    tool=${OPTARG}
    ;;
  esac
done

echo "tool=${tool}, version='${version}', previous version='${version}'"

docker_tool_dir="src/docker_modules/"${tool}"/"
echo ${docker_tool_dir}
if [ -d ${docker_tool_dir} ]; then
  echo "docker module found for ${tool}."
  if [ -d ${docker_tool_dir}${version} ]; then
    echo "version already existing, skipping."
  else
    cp -R ${docker_tool_dir}${prev_version} ${docker_tool_dir}${version}
    sed -i "s|${prev_version}|${version}|g" "${docker_tool_dir}${version}/Dockerfile"
    sed -i "s|${prev_version}|${version}|g" "${docker_tool_dir}${version}/docker_init.sh"
    echo "docker_module for ${tool}:${version}, done."
  fi
else
  echo "docker module not found for '${tool}', skipping."
fi

singularity_tool_dir="src/singularity_modules/"${tool}"/"
echo ${singularity_tool_dir}
if [ -d ${singularity_tool_dir} ]; then
  echo "singularity module found for $tool."
  if [ -d ${singularity_tool_dir}${version} ]; then
    echo "version already existing, skipping."
  else
    cp -R ${singularity_tool_dir}${prev_version} ${singularity_tool_dir}${version}
    sed -i "s|${prev_version}|${version}|g" "${singularity_tool_dir}${version}/${tool}.def"
    sed -i "s|${prev_version}|${version}|g" "${singularity_tool_dir}${version}/build.sh"
    echo "singularity_module for ${tool}:${version}, done."
  fi
else
  echo "singularity module not found for '${tool}', skipping."
fi

nf_tool_dir="src/nf_modules/"$tool"/"
echo $nf_tool_dir
if [ -d ${nf_tool_dir} ]; then
  echo "nf module found for ${tool}."
  find ${nf_tool_dir} -maxdepth 1 -mindepth 1 -type f -name "*.config" |
    awk "{system(\"sed -i \\\"s|${prev_version}|${version}|g\\\" \"\$0)}"
  echo "nf_module for ${tool}:${version}, done."
else
  echo "nf module not found for '${tool}', skipping."
fi

psmn_modules_dir="src/psmn_modules/.git/"
if [ ! -d ${nf_tool_dir} ]; then
  git submodule init && \
  git submodule update
fi
psmn_tool_app_dir="src/psmn_modules/apps/"${tool}"/"
psmn_tool_module_dir="src/psmn_modules/modulefiles/"${tool}"/"
echo ${psmn_tool_app_dir}
if [ -d ${psmn_tool_app_dir} ]; then
  echo "psmn module found for ${tool}."
  cp ${psmn_tool_app_dir}/install_${prev_version}.sh \
    ${psmn_tool_app_dir}/install_${version}.sh
  sed -i "s|$prev_version|$version|g" ${psmn_tool_app_dir}/install_${version}.sh
  cp ${psmn_tool_module_dir}/${prev_version}.lua \
    ${psmn_tool_module_dir}/${version}.lua
  sed -i "s|${prev_version}|${version}|g" ${psmn_tool_module_dir}/${version}.lua
  echo "psmn_module for ${tool}:${version}, done."
else
  echo "psmn module not found for '${tool}', skipping."
fi