| #!/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" | 
 |   "$BOOTSTRAP_PYTHON_BIN" "bootstrap/bootstrap.py" --bootstrap-name "$BOOTSTRAP_PATH" | 
 |  | 
 |   cd - > /dev/null | 
 | } |