#!/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="TERM=uart"

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
