#!/bin/bash
# Copyright 2017 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

#### CATEGORY=Software delivery
### make a zedboot USB key

## usage: fx mkzedboot [options] <usb device>
##  -f            force writing to a non-usb target

set -e

source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/lib/vars.sh || exit $?
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/lib/fx-mkzedboot.sh || exit $?

fx-config-read

force=false
if [[ "$1" == "-f" ]]; then
  shift
  force=true
fi

USB_DEVICE="$1"

if [[ -z "${USB_DEVICE}" ]]; then
    echo >&2 "device argument required"
    echo "USB disks:"
    fx-command-run list-usb-disks
    exit 1
fi

image=""
type=""

# Try to get image for efi, if not found, try to get vboot image for chromebook
image="$(fx-command-run list-build-artifacts --allow-empty --type blk mkzedboot)"
type="efi"
if [[ -z "${image}" ]]; then
   image="$(fx-command-run list-build-artifacts --allow-empty --type zbi.signed mkzedboot)"
   type="vboot"
fi

if [[ -z "${image}" ]]; then
  fx-error "Cannot find image to run mkzedboot. Re-check build board and product."
  exit 1
fi

if [[ ! -f "${FUCHSIA_BUILD_DIR}/${image}" ]]; then
  fx-warn "Cannot find image to run mkzedboot: $image. Attempting to build it..."
  fx-command-run build "${image}"
fi

fx-mkzedboot "${USB_DEVICE}" "${type}" "${FUCHSIA_BUILD_DIR}/${image}" $force
