#!/bin/bash

# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Downloads the latest buildbot image and prints the path to it.
# This script only works if you have access to buildbot images.

# --- BEGIN COMMON.SH BOILERPLATE ---
# Load common CrOS utilities.  Inside the chroot this file is installed in
# /usr/lib/crosutils.  Outside the chroot we find it relative to the script's
# location.
find_common_sh() {
  local common_paths=(/usr/lib/crosutils $(dirname "$(readlink -f "$0")"))
  local path

  SCRIPT_ROOT=
  for path in "${common_paths[@]}"; do
    if [ -r "${path}/common.sh" ]; then
      SCRIPT_ROOT=${path}
      break
    fi
  done
}

find_common_sh
. "${SCRIPT_ROOT}/common.sh" || { echo "Unable to load common.sh"; exit 1; }
# --- END COMMON.SH BOILERPLATE ---

get_default_board

DEFINE_string board "$DEFAULT_BOARD" \
  "The name of the board to check for images."
DEFINE_boolean incremental "$FLAGS_FALSE" "Download incremental build"

# Parse command line flags.
FLAGS "$@" || exit 1
eval set -- "$FLAGS_ARGV"

# Check on the board that they are trying to set up.
if [ -z "$FLAGS_board" ] ; then
  die "Error: --board required."
fi

BUCKET="chromeos-image-archive"
if [ $FLAGS_board = x86-generic ]; then
  if [ "$FLAGS_incremental" -eq "$FLAGS_TRUE" ]; then
    PATH_PREFIX="x86-generic-pre-flight-queue"
  else
    PATH_PREFIX="x86-generic-full"
  fi
else
  die "Unrecognized board: $FLAGS_board"
fi

URL_PREFIX="gs://$BUCKET/$PATH_PREFIX"
LATEST_BUILD=$(gsutil cat $URL_PREFIX/LATEST)
IMAGES_DIR="$DEFAULT_BUILD_ROOT/images/$FLAGS_board"
LATEST_IMAGE_DIR="$IMAGES_DIR/$LATEST_BUILD"
if [ ! -e $LATEST_IMAGE_DIR/chromiumos_base_image.bin ]; then
  mkdir -p $LATEST_IMAGE_DIR
  gsutil cp "$URL_PREFIX/$LATEST_BUILD/image.zip" \
      "$LATEST_IMAGE_DIR/image.zip" || die "Could not download image.zip"
  ( cd $LATEST_IMAGE_DIR && unzip -qo image.zip ) \
      || die "Could not unzip image.zip"
fi

echo $LATEST_IMAGE_DIR
exit 0
