#!/bin/bash

# Copyright 2015 The Bazel Authors. All rights reserved.
#
# Licensed 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.

# Jenkins is capable of executing shell scripts directly, even on Windows,
# but it uses a shell binary bundled with it and not the msys one. We don't
# want to use two different shells, so a batch file is used instead to call
# the msys shell.

# We need to execute bash with -l so that we don't get the usual environment
# variables from cmd.exe which would interfere with our operation, but that
# means that PWD will be $HOME. Thus, we need to cd to the source tree.
cd $(dirname $0)/../../..

# Find Java. Minor versions and thus the name of the directory changes quite
# often.
export JAVA_HOME=$(ls -d /c/Program\ Files/Java/jdk* 2> /dev/null | head -n 1)
if [[ "$JAVA_HOME" == "" ]]; then
  echo "JDK not found under c:\\Program Files\\Java" 1>& 2
  exit 1
fi

# These variables are temporarily needed for Bazel
export BAZEL_SH="c:/tools/msys64/usr/bin/bash.exe"
export TMPDIR=${TMPDIR:-c:/bazel_ci/temp}
mkdir -p "${TMPDIR}"  # mkdir does work with a path starting with 'c:/', wow

# Even though there are no quotes around $* in the .bat file, arguments
# containing spaces seem to be passed properly.
exec ./compile.sh "$*"
