#!/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"
DEFINE_boolean enable_rootfs_verification "${FLAGS_TRUE}" \
  "Enable rootfs verification for the downloaded image."

# 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_notrace "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
  PATH_PREFIX="${FLAGS_board}-release"
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

IMAGE_NAME=chromiumos_qemu_image.bin
IMAGE_FILE="${LATEST_IMAGE_DIR}"/"${IMAGE_NAME}"
ESP_DIR="${LATEST_IMAGE_DIR}/esp"

cleanup() {
  "$SCRIPTS_DIR/mount_gpt_image.sh" -u -e "${ESP_DIR}"
}

# This might seem a bit strange, but rootfs verification is already on with the
# image, the only reason we've named this flag 'enable_rootfs_verfication'
# versus 'disable_xyz' is to stay constant with the
# 'noenable_rootfs_verification' flag used in build image to disable it.
if [ "${FLAGS_enable_rootfs_verification}" -eq "${FLAGS_FALSE}" ] ; then
  trap cleanup INT TERM EXIT
  # We only need to touch the ESP part
  "$SCRIPTS_DIR/mount_gpt_image.sh" -i chromiumos_qemu_image.bin \
    -f "${LATEST_IMAGE_DIR}" -e "${ESP_DIR}"

  # Change the default to boot from the usb instead of vusb, usb is set
  # to boot from /dev/sda
  sudo sed -i -e 's/vusb/usb/g' "${ESP_DIR}/syslinux/default.cfg"

  sync; sync
fi

echo $LATEST_IMAGE_DIR
exit 0
