#!/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="$(python3 -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
    python3 "$(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
