#!/bin/bash

docker_login() {
  docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASS
}

create_dockerhub_repo(){
  if [[ "$SCI_PROJECT_TYPE" != "MAVEN_LIB" && -z "$SKIP_REPO_CREATION" ]]; then
    echo "[CI] Verificando se o repositorio ja existe no Dockerhub"

    if [ -z "$SCI_MULTI_DOCKER" ]; then

      SDL_PROPERTIES="sdl.properties"
      POM_XML="pom.xml"

      if [[ -z "$SVC_IMAGE" && -f "$SDL_PROPERTIES" ]]; then
        IMAGE_NAME=`cat $SDL_PROPERTIES | sed -n -e 's/generator.app.name=//p'`
        IMAGE_NAME=`echo ${IMAGE_NAME%%[[:cntrl:]]} | xargs`
      elif [[ -z "$SVC_IMAGE" && -f "$POM_XML" ]]; then
        IMAGE_NAME=`mvn help:evaluate -Dexpression=project.artifactId -q -DforceStdout`
        IMAGE_NAME=`echo ${IMAGE_NAME%%[[:cntrl:]]} | xargs`
      elif [ -n "$SVC_IMAGE" ]; then
        IMAGE_NAME=$SVC_IMAGE
      else
        echo "[CI] Não foi possível encontrar o nome da imagem do serviço. Por favor entre com contato com a equipe DevOps."
        exit 1
      fi

      echo "[CI] Validando o repo $IMAGE_NAME no Dockerhub. Para o projeto no gitlab $CI_PROJECT_NAME"

      DATA='{
        "query": "mutation($repository: String, $gitRepo: String) { createDockerhubRepo(repository: $repository, gitRepo: $gitRepo) { result } }",
        "variables": { "repository":"'$IMAGE_NAME'","gitRepo":"'$CI_PROJECT_NAME'" }
      }'

      RESPONSE_CQAT=`curl -sS \
          -X POST \
          -H "Content-Type: application/json" \
          --data "$DATA" \
          $CQAT_URL/graphql`

      if jq -e . >/dev/null 2>&1 <<<"$RESPONSE_CQAT"; then
        echo "[CI] Validando retorno da criação do repo."
      else
        echo "[CI] Não foi possível se comunicar com o CQAT. Por favor entre com contato com a equipe DevOps."
        echo $RESPONSE_CQAT
        exit 1
      fi

      ERROR_MESSAGES=`echo $RESPONSE_CQAT | jq -r ".errors | if . != null then .[].message else empty end" 2>&-`

      if [ -n "$ERROR_MESSAGES" ]; then
          echo "[CI] Ocorreu um erro ao executar a validação/criação do repo."
          echo $ERROR_MESSAGES
          exit 1
      fi
    else
      SCRIPT="import os; os.chdir('$PWD/senior-ci'); from docker import create_repositories; create_repositories('$PWD')"
      python3 -c "$SCRIPT"
    fi
  fi
}

