#!/usr/bin/env bash

SPRING_DOCKER_IMAGE=${SPRING_DOCKER_IMAGE:-pivotalrabbitmq/spring-authorization-server:0.0.10}

ensure_spring() {
  if docker ps | grep spring &> /dev/null; then
     print "spring already running ..."
 else
   start_spring
 fi
}
init_spring() {
  SPRING_CONFIG_DIR=${TEST_CONFIG_PATH}/spring
  SPRING_URL=${SPRING_URL:-$OAUTH_PROVIDER_URL}

  print "> SPRING_CONFIG_DIR: ${SPRING_CONFIG_DIR}"
  print "> SPRING_URL: ${SPRING_URL}"
  print "> SPRING_DOCKER_IMAGE: ${SPRING_DOCKER_IMAGE}"

  generate-ca-server-client-kpi spring $SPRING_CONFIG_DIR
  generate-server-keystore-if-required spring $SPRING_CONFIG_DIR
}
start_spring() {
  begin "Starting spring ..."

  init_spring
  kill_container_if_exist spring

  MOUNT_SPRING_CONF_DIR=$CONF_DIR/spring

  mkdir -p $MOUNT_SPRING_CONF_DIR
  ${BIN_DIR}/gen-spring-yml ${SPRING_CONFIG_DIR} $ENV_FILE $MOUNT_SPRING_CONF_DIR/application.yml
  print "> EFFECTIVE SPRING_CONFIG_FILE: $MOUNT_SPRING_CONF_DIR/application.yml"
  cp ${SPRING_CONFIG_DIR}/*.pem $MOUNT_SPRING_CONF_DIR
  cp ${SPRING_CONFIG_DIR}/*.jks $MOUNT_SPRING_CONF_DIR

  docker run \
		--detach \
		--name spring \
    --net ${DOCKER_NETWORK} \
		--publish 8080:8080 \
    --publish 8443:8443 \
    -v ${MOUNT_SPRING_CONF_DIR}:/config \
		${SPRING_DOCKER_IMAGE} 

  wait_for_oidc_endpoint spring $SPRING_URL $MOUNT_SPRING_CONF_DIR/ca_spring_certificate.pem
  end "spring is ready"

}
