#!/usr/bin/env bash

# Copyright (c) 2017 Google Inc. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Set unique build ID.
AUTONINJA_BUILD_ID="$(vpython -c "import uuid; print(uuid.uuid4())")"
export AUTONINJA_BUILD_ID

if [ "$NINJA_SUMMARIZE_BUILD" == "1" ]; then
    export NINJA_STATUS="[%r processes, %f/%t @ %o/s : %es ] "
fi

# Execute whatever is printed by autoninja.py.
# Also print it to reassure that the right settings are being used.
command=$(vpython "$(dirname -- "$0")/autoninja.py" "$@")
if [ "$NINJA_SUMMARIZE_BUILD" == "1" ]; then
  echo "$command"
fi
if eval "$command"; then
  if [ "$NINJA_SUMMARIZE_BUILD" == "1" ]; then
    vpython "$(dirname -- "$0")/post_build_ninja_summary.py" "$@"
  fi

  # Collect ninjalog from googler.
  vpython "$(dirname -- "$0")/ninjalog_uploader_wrapper.py" --cmd $command
  exit
fi

# Collect ninjalog from googler.
vpython "$(dirname -- "$0")/ninjalog_uploader_wrapper.py" --cmd $command

# Return an error code of 1 so that if a developer types:
# "autoninja chrome && chrome" then chrome won't run if the build fails.
exit 1
