#!/usr/bin/env bash

function bootstrap_python3 {
  base_dir=$(dirname "${BASH_SOURCE[0]}")

  cd "${base_dir}"

  if [ -e ".bleeding_edge" ]; then
    CIPD_MANIFEST="bootstrap/manifest_bleeding_edge.txt"
  else
    CIPD_MANIFEST="bootstrap/manifest.txt"
  fi

  while IFS= read -r line; do
    if [[ $line =~ ^[^#].*cpython3/.*version:(.*)$ ]]; then
      PYTHON3_VERSION=${BASH_REMATCH[1]}
      PYTHON3_VERSION=${PYTHON3_VERSION//[[:space:]]/}
    fi
  done < $CIPD_MANIFEST
  if [ "X$PYTHON3_VERSION" == "X" ]; then
    echo Could not extract Python 3 version from manifest.
    return 1
  fi

  BOOTSTRAP_PATH="bootstrap-${PYTHON3_VERSION}_bin"

  # Install CIPD packages. The CIPD client self-bootstraps.
  "cipd" ensure -log-level warning -ensure-file "${CIPD_MANIFEST}" \
      -root "$BOOTSTRAP_PATH"

  BOOTSTRAP_PYTHON_BIN="${BOOTSTRAP_PATH}/python3/bin/python3"
  if [[ ! -x "$BOOTSTRAP_PYTHON_BIN" && $(uname -sm) == "Darwin arm64" ]]; then
    # There's no CIPD python3 package on mac/arm64. fall back to system python3.
    # TODO(https://crbug.com/1103326): Remove once mac/arm64 python3 exists.
    BOOTSTRAP_PYTHON_BIN=python3
  fi
  "$BOOTSTRAP_PYTHON_BIN" "bootstrap/bootstrap.py" --bootstrap-name "$BOOTSTRAP_PATH"

  cd - > /dev/null
}