#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

function usage {
  echo -e "\nUsage: $(basename "$0") <server-version> [OPTIONS]" \
          "\n\nRun the Gremlin-Go test suite in Docker." \
          "\n\nOptions:" \
          "\n\t<server-version> \t Optional value, if unspecified the test suite will run with the current version
           \t\t\t of Gremlin server as specified in the TinkerPop pom.xml file." \
          "\n\t-h, --help \t\t Show this message." \
          "\n\nExamples:" \
          "\n\tRunning the default: ./run.sh" \
          "\n\tThe default requires a SNAPSHOT server image to be built using:
          mvn clean install -pl :gremlin-server -DskipTests -DskipIntegrationTests=true -am && mvn install -Pdocker-images -pl :gremlin-server" \
          "\n\tRunning a prebuilt local SNAPSHOT build: ./run.sh 3.x.x-SNAPSHOT" \
          "\n\tRunning a released version: ./run.sh 3.8.0" \
          "\n"
}

if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
    usage
    exit 0
fi

# Parses current gremlin server version from project pom.xml file using perl regex
GREMLIN_SERVER_VERSION=$(grep tinkerpop -A2 pom.xml | sed -r -n 's/.*<version>(([0-9]+\.?){3})(-SNAPSHOT)?<\/version>/\1\3/p')
export GREMLIN_SERVER="${1:-$GREMLIN_SERVER_VERSION}"
echo "Running server version: $GREMLIN_SERVER"

ABS_PROJECT_HOME=$(dirname $(realpath "$0"))/..
export ABS_PROJECT_HOME

# Passes current gremlin server version into docker compose as environment variable
docker compose up --build --exit-code-from gremlin-go-integration-tests
EXIT_CODE=$?
# Removes all service containers
docker compose down
exit $EXIT_CODE
