#!/bin/bash
# Copyright 2018 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=Device management
### flash and, optionally, pave a connected device
## usage: fx flash [-s <serial>] [--pave]
##   -s        Device you wish to flash to (only necessary if multiple
##             devices in fastboot mode)
##   --pave    Pave device after flashing (recommended)

set -e

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

usage() {
    fx-command-help
    echo "Available devices:"
    fastboot devices -l
    exit 1
}

pave=false
partition=$ZIRCONA
device=
while [[ $# -ge 1 ]]; do
  case "$1" in
  -h|--help)
    usage
    ;;
  --pave)
    pave=true
    ;;
  --nopave)
    pave=false
    ;;
  -s)
    shift
    device="$1"
    ;;
  *)
    break
  esac
  shift
done

num_devices=$(fastboot devices | wc -l)
if [[ "${num_devices}" -lt 1 ]]; then
  echo "Please place device into fastboot mode!"
  exit 1
elif [[ "${num_devices}" -gt 1 ]] && [[ -z "${device}" ]]; then
  echo "More than one device detected, please provide -s <device>!"
  usage
  exit 1
fi

fastboot_args=()
if [[ ! -z "${device}" ]]; then
  if [[ ! "$(fastboot devices -l)" =~ "${device}" ]]; then
    echo "Device ${device} not found!"
    usage
    exit 1
  fi
  fastboot_args=("-s" "${device}")
fi

"${FUCHSIA_BUILD_DIR}/flash.sh" "${fastboot_args[@]}"

if [[ "${pave}" == "true" ]]; then
  fx-command-exec pave -1
fi
