#!/bin/sh

. gconfig

TUSER=${DISTRO:-ubuntu}
QUIET_FLAG="-vP"

usage() {
  echo "Usage: ${0##*/} [OPTION]... <command>"
  echo "Run command on build target."
  echo
  cat << EOF
  --help    display this help and exit
  --user=U  run as U instead of ubuntu
EOF
}

if [ $# != 0 ] ; then
  while true ; do
    case "$1" in
      --help|-h)
        usage
        exit 0
        ;;
      --user|-u)
        TUSER="$2"
        shift 2
        ;;
      --quiet|-q)
        QUIET_FLAG="-q"
        shift 1
        ;;
      --*)
        echo "unrecognized option $1"
        exit 1
        ;;
      *)
        break
        ;;
    esac
  done
fi

if [ $# = 0 ] ; then
  usage
  exit 1
fi

if [ -n "$USE_DOCKER" ]; then
    # Use tar, so that files are created with the correct owner on the host
    docker exec -u $TUSER gitian-target tar -C `dirname "$1"` -cf - `basename "$1"` | tar -C "$2" -xf -
elif [ -z "$USE_LXC" ]; then
    src="${1%/}"  # remove trailing / which triggers special rsync behaviour
    rsync --checksum -a $QUIET_FLAG -e "ssh -oConnectTimeout=30 -oNoHostAuthenticationForLocalhost=yes -i ${GITIAN_BASE:-.}/var/id_rsa -p $VM_SSH_PORT" "$TUSER@localhost:${src}" "$2"
else
    config-lxc
    sudo $LXC_EXECUTE -n gitian -f var/lxc.config -- sudo -i -u $TUSER tar -C `dirname "$1"` -cf - `basename "$1"` | tar -C "$2" -xf -
fi
