#!/bin/bash -eu

# Copyright 2015 Google Inc. 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.

# A build status command to provide the package info generator with
# the information about the commit being built

set -eu
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$(dirname ${SCRIPT_DIR})/release/common.sh"

git_hash=$(git rev-parse --short HEAD)
echo "RELEASE_GIT_HASH ${git_hash}"
url="${GIT_REPOSITORY_URL:-https://github.com/google/bazel}"
echo "RELEASE_COMMIT_URL ${url}/commit/${git_hash}"
if [ -n "${BUILT_BY-}" ]; then
  echo "RELEASE_BUILT_BY ${BUILT_BY}"
fi
if [ -n "${BUILD_LOG-}" ]; then
  echo "RELEASE_BUILD_LOG ${BUILD_LOG}"
fi
echo "RELEASE_COMMIT_MSG $(git_commit_msg | tr '\n' '\f')"
release_name=$(get_release_name)
rc=$(get_release_candidate)
if [ -n "${release_name}" ]; then
  if [ -n "${rc}" ]; then
    echo "RELEASE_NAME ${release_name}rc${rc}"
  else
    echo "RELEASE_NAME ${release_name}"
  fi
fi
