#!/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=("$(dirname "$(readlink -f "$0")")/.." /usr/lib/crosutils)
  local path

  SCRIPT_ROOT="${common_paths[0]}"
  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" || exit 1
# --- END COMMON.SH BOILERPLATE ---

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
