#!/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.
# Don't use python3 because it doesn't work in git bash on Windows.
command=$(python "$(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.
  python3 "$(dirname -- "$0")/ninjalog_uploader_wrapper.py" --cmd $command
  exit
fi

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