#!/bin/bash
# Copyright 2017 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.

### copy a file to/from a target device

## usage: fx cp [--to-target|--to-host] SRC DST
##
## Copies a file from the host to the target device, or vice versa.
##
## --to-target: copy file SRC from host to DST on the target
## --to-host: copy file SRC from target to DST on the host
##
## The default is to copy files to the target.


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

to_target=true
if [[ $# -eq 3 ]]; then
  case "$1" in
  --to-target)
    to_target=true
    ;;
  --to-host)
    to_target=false
    ;;
  *)
    fx-command-help
    exit 1
  esac
  shift
fi

if [[ $# -ne 2 ]]; then
  fx-command-help
  exit 1
fi

src="$1"
dst="$2"
host="$(get-fuchsia-device-addr)"

if [[ "${to_target}" = "true" ]]; then
  fx-command-run sftp -q -b - "[${host}]" > /dev/null << EOF
- rm "${dst}"
put "${src}" "${dst}"
EOF
else
  rm -f -- "${dst}"
  fx-command-run sftp -q -b - "[${host}]" > /dev/null << EOF
get "${src}" "${dst}"
EOF
fi
