#!/bin/bash
# Generate CLion project or CMake caches

cd "$(dirname "$(which "$0")")"

USE_CLION=

if [ "$1" = "-c" ]; then
  USE_CLION=1
elif [ $# != 0 ]; then
  echo "usage: $0 [-c]"
  echo "  options:"
  echo "    -c    generate a CLion project instead of CMake caches"
  exit 1
fi

if [ -f .idea/workspace.xml -o ! -z "$USE_CLION" ]; then
  CMAKE_RUN_CONFIGURATION_MANAGER="    <generated>
      <config projectName=\"SimRobot\" targetName=\"SimRobot\" />
    </generated>"

  RUN_MANAGER="    <list>
      <item itemvalue=\"CMake Application.SimRobot\" />
    </list>"

  if [ -f .idea/workspace.xml ]; then
    (
      sed -n "/<component name=\"CMakeRunConfigurationManager\"/{p;:a;N;/<\/component>\$/!ba;c\\
$((tr '\n' '@' | sed 's/@/\\\n/g') <<<$CMAKE_RUN_CONFIGURATION_MANAGER)
\
  <\/component>
};p" |
      sed -n "/<component name=\"RunManager\"/{p;:a;N;/<\/component>\$/!ba;c\\
$((tr '\n' '@' | sed 's/@/\\\n/g') <<<$RUN_MANAGER)
\
  <\/component>
};p"
    ) <.idea/workspace.xml >.idea/temp.xml && mv .idea/temp.xml .idea/workspace.xml
  else
    echo >.idea/workspace.xml "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<project version=\"4\">
  <component name=\"ExecutionTargetManager\" SELECTED_TARGET=\"CMakeBuildProfile:Release\" />
  <component name=\"CMakeRunConfigurationManager\" shouldGenerate=\"false\" shouldDeleteObsolete=\"false\">
$CMAKE_RUN_CONFIGURATION_MANAGER
  </component>
  <component name=\"RunManager\" selected=\"CMake Application.SimRobot\">
$RUN_MANAGER
  </component>
</project>"
  fi
else
  for CONFIG in Debug Develop Release; do
    cmake -DCMAKE_BUILD_TYPE=$CONFIG -G Ninja -S . -B ../../Build/Linux/CMake/$CONFIG
  done
fi
