#!/usr/bin/env bash

# Copyright 2018 The Fuchsia Authors
#
# Use of this source code is governed by a MIT-style
# license that can be found in the LICENSE file or at
# https://opensource.org/licenses/MIT

set -eo pipefail

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
BUILD_DIR="${DIR}/../build-arm64"
BOOT_PART=boot

CMDLINE=

function HELP {
    echo "help:"
    echo "-b <board>     : Board to flash"
    echo "-c <cmd line>  : Extra command line options"
    echo "-m             : Add mexec option to command line"
    echo "-o <dir>       : Build directory"
    echo "-P             : Boot partition name"
    echo "-h for help"
    exit 1
}

while getopts "b:c:d:mo:P:h" FLAG; do
    case $FLAG in
        b) BOARD="${OPTARG}";;
        c) CMDLINE+=" ${OPTARG}";;
        d) RAMDISK="${OPTARG}";;
        m) CMDLINE+=" netsvc.netboot=true";;
        o) BUILD_DIR="${OPTARG}";;
        P) BOOT_PART="${OPTARG}";;
        h) HELP;;
        \?)
            echo unrecognized option
            HELP
            ;;
    esac
done
shift $((OPTIND-1))

if [[ -z "${BOARD}" ]]; then
    echo must specify a board to flash
    HELP
fi

ZBI="${BUILD_DIR}/tools/zbi"
BOOTDATA_BIN="${BUILD_DIR}/zircon-bootimage.bin"
CMDLINE_FILE="${BUILD_DIR}/${BOARD}-cmdline.txt"
OUT_IMAGE="${BUILD_DIR}/${BOARD}-boot.img"

echo ${CMDLINE} > ${CMDLINE_FILE}
${ZBI} -o ${OUT_IMAGE} ${BOOTDATA_BIN} -T cmdline ${CMDLINE_FILE}

fastboot flash "${BOOT_PART}" "${OUT_IMAGE}"
fastboot reboot
