---
version: '3'

tasks:
  load:custom-engines:
    deps:
      - :install:software:docker
      - :install:software:jq
      - :install:software:yq
    env:
      CUSTOM_ENGINES:
        sh: yq e -o=j '.' .codeclimate.yml | jq -r '.plugins | keys[]'
    cmds:
      - |
        function dockerGet() {
          if ! docker images {{.DOCKERHUB_PROFILE}}/$1 | grep ' slim-codeclimate ' > /dev/null; then
            docker pull "{{.DOCKERHUB_PROFILE}}/$1:slim-codeclimate"
          fi
          docker tag "{{.DOCKERHUB_PROFILE}}/$1:slim-codeclimate" "codeclimate/codeclimate-$1:latest"
        }
        for ENGINE in $CUSTOM_ENGINES; do
          if [ "$(yq e -o=j '.' .codeclimate.yml | jq --arg engine $ENGINE -r '.plugins[$engine].enabled')" == 'true' ]; then
            .config/log info "Loading custom CodeClimate engine ($ENGINE)"
            dockerGet "$ENGINE"
          fi
        done

  taskfiles:add:
    cmds:
      - rm -rf .config
      - cp -rf ../../.config .config
      - cp ../../start.sh start.sh
      - cp ../../Taskfile.yml Taskfile.yml
      - cp ../../package.json package.json
    status:
      - '[ -z "$CODECLIMATE_INTEGRATION_TEST" ]'

  taskfiles:remove:
    cmds:
      - rm -rf .config start.sh Taskfile.yml package.json
    status:
      - '[ -z "$CODECLIMATE_INTEGRATION_TEST" ]'