#!/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.

### 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 "$@"
