#!/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="$(python -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
    python "$(dirname -- "$0")/post_build_ninja_summary.py" "$@"
  fi

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

# Collect ninjalog from googler.
"$(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
