#!/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=Software delivery
### build Fuchsia and push to device

## usage: fx build-push [ninja option,...] [target,...]
##
## Build ALL targets. After building all the targets, push the ones that were
## supplied to this command. If no targets were specified push all of them.
## The packages are pushed to the device specified. If no device is supplied
## explicitly this will push to the single connected device. If multiple devices
## are connected and no device is specified, pushing will fail.

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/updates.sh || exit $?
fx-config-read

function main {
  local args=()
  local targets=()
  while (($#)); do
    case "$1" in
      -C|-f|-j|-k|-l|-t|-w)
        args+=("$1")
        shift
        args+=("$1")
        ;;
      -n|-v)
        args+=("$1")
        ;;
      *)
        targets+=("$1")
    esac
    shift
  done

  fx-command-run build "${args[@]}"

  check-for-amber-server || return 1

  fx-command-run push-package "${targets[@]}"
}

main "$@"
