#!/bin/bash
# Copyright 2014 Canonical Ltd.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; version 2.1.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Author: Benjamin Zeller <benjamin.zeller@canonical.com>

SCRIPTPATH=$(dirname $0)
. `dirname $0`/functions.inc

FOLDERNAME=$2
TARGET_DEVICE=$3
TARGET_DEVICE_PORT=$4
TARGET_DEVICE_HOME=$5
BUILDTARGETS=$6

USAGE="$0 [serialnumber] [foldername] [target_device] [target_device_port] [target_device_home]"

echo "BUILDINGSCRIPT"

if [[ -z $FOLDERNAME ]]; then
  echo ${USAGE}
  exit
fi

if [[ -z ${TARGET_DEVICE_PORT} ]]; then
  TARGET_DEVICE_PORT=2222
fi

if [[ -z ${TARGET_DEVICE} ]]; then
  TARGET_DEVICE=phablet@127.0.0.1
fi

if [[ -z ${TARGET_DEVICE_HOME} ]]; then
  TARGET_DEVICE_HOME=/home/phablet/dev_tmp
fi

SSH_CRED="ssh -i ${SSHIDENTITY} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p${TARGET_DEVICE_PORT}"
SSH="${SSH_CRED} ${TARGET_DEVICE}"
RSYNC="rsync --delete -avzP -e"
LOCAL_RSYNC="rsync --delete -avP"

DEV_PROJECT_DIR="${TARGET_DEVICE_HOME}/${FOLDERNAME}"

echo "Rsync command: ${RSYNC} ${FOLDERNAME} ${TARGET_DEVICE}:${DEV_PROJECT_DIR}"

# make sure that the device has the target directory
$SSH mkdir -p ${DEV_PROJECT_DIR}

$RSYNC "${SSH_CRED}" ${FOLDERNAME}/ ${TARGET_DEVICE}:${DEV_PROJECT_DIR}

DEVICETRIPLET=$($SSH "gcc -dumpmachine")
BINDIR="${DEV_PROJECT_DIR}/click/lib/${DEVICETRIPLET}/bin"

$SSH mkdir -p "${BINDIR}"
$SSH "cd ${DEV_PROJECT_DIR};GOPATH=${DEV_PROJECT_DIR} GOBIN=${BINDIR} TMPDIR=/tmp go install ${BUILDTARGETS}"  
if [[ $? -gt 0 ]]; then
  echo "Have you enabled Platform Development Mode? (Devices > Advanced)"
  exit
fi

echo "Transferring files from device to host.."
$RSYNC "${SSH_CRED}" ${TARGET_DEVICE}:${DEV_PROJECT_DIR}/ ${FOLDERNAME}

echo "Syncing files to click package dir"
$LOCAL_RSYNC ${FOLDERNAME}/share ${FOLDERNAME}/manifest.json ${FOLDERNAME}/*.desktop ${FOLDERNAME}/*.json ${FOLDERNAME}/click
