#!/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.
  python "$(dirname -- "$0")/ninjalog_uploader_wrapper.py" --cmd $command
  exit
fi

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