#!/bin/bash

echo "build from scratch: $BUILD_FROM_SCRATCH"
if $BUILD_FROM_SCRATCH ; then
  if [ ! -z "$DIR_TO_BUILD" ]; then
    cd "$DIR_TO_BUILD"
  fi
  if [ ! -z "$VERSION_TO_DEPLOY" ]; then
    yq -e ".project.version = \"${VERSION_TO_DEPLOY}\"" -i pom.xml
    yq -p xml '.project.version' pom.xml
  fi
  if [ -z "$MVN_PROFILE" ]; then
    pwd
    mvn_command="mvn clean install $MAVEN_EXTRA_ARGS"
  else
    pwd
    mvn_command="mvn clean install $MVN_PROFILE $MAVEN_EXTRA_ARGS"
  fi

  # Run Maven command and capture output
  mvn_output=$($mvn_command)
  maven_exit_code=$?

  # Handle Maven command output
  touch mvn.log
  rm -f mvn.log
  touch mvn.log
  echo "$mvn_output" > mvn.log

  # Check for build failure
  if grep "BUILD FAILURE" mvn.log; then
    seperator="\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-"
    error_message=$(tail -n +"$(grep -n "$seperator" mvn.log | tail -1 | cut -d":" -f1)" mvn.log | head -n2 | tail -n1)
    error_message=$(echo $error_message | sed 's@[][]@ @g')
    echo "error message: $error_message"
    echo "MESSAGE_OF_FAIL=$error_message" >> $GITHUB_ENV
    echo "BUILD_FAILED=true" >> $GITHUB_ENV
    cat mvn.log
    rm -f mvn.log
    exit 1
  fi

  # If no build failure, proceed
  cat mvn.log
  rm -f mvn.log

  # Check if Maven command failed
  if [[ "$maven_exit_code" -ne 0 ]] ; then
    echo "mvn command fails with exit code $maven_exit_code"
    error_message="general maven error"
    echo "MESSAGE_OF_FAIL=$error_message" >> $GITHUB_ENV
    echo "BUILD_FAILED=true" >> $GITHUB_ENV
    exit 1
  fi

  # Additional failure check
  if [[ "$?" -ne 0 ]] ; then
    echo 'ERROR in maven clean install. exiting'; exit "$?"
  fi

  # Additions based on provided code
  echo "ZIP_FILE=target/${DIR_TO_BUILD}.zip" >> $GITHUB_ENV
  echo "###############################################"
  ls -al
  ls -al target

  aws s3 rm s3://p81-${ENVIRONMENT}-env-files/jars/ --recursive --exclude "*" --include "$DIR_TO_BUILD*"
  VERSION_TO_DEPLOY=$(yq -p xml '.project.version' pom.xml)
  file_name="$DIR_TO_BUILD-$VERSION_TO_DEPLOY.zip"

  # Upload the artifact to S3
  cd target
  aws s3 cp --quiet "$file_name" s3://p81-${ENVIRONMENT}-env-files/jars/

  # Set environment variables for GitHub Actions
  echo "ZIP_FILE=$file_name" >> $GITHUB_ENV
  echo "PLUGIN_ZIP_FILE_PATH=jars/$file_name" >> $GITHUB_ENV
  echo "CONNECTOR_NAME=$DIR_TO_BUILD" >> $GITHUB_ENV
  echo "PLUGIN_VERSION=$VERSION_TO_DEPLOY" >> $GITHUB_ENV
fi
