#!/bin/bash

set -e

require_var PLATFORM

usage() {
  echo "$(basename $0) [options] <app directory>"
  echo "Options:"
  echo "-t <target directory> (directory for target files)"
  echo "-p <platform> (target platform)"
  exit 1
}

# Default parameters
target_dir=
target_platform="${PLATFORM}"

# Parse arguments
while getopts ":t:p:" opt; do
  case $opt in
    t)
      target_dir="${OPTARG}"
      ;;
    p)
      target_platform="${OPTARG}"
      ;;
    *)
      usage
      ;;
  esac
done

shift $((OPTIND-1))

# Path to this script
this_dir=$(cd $(dirname "$0") && pwd)

# Path to firmware's main directory
main_dir=$(cd "$this_dir/../../../../main" && pwd)

# Path to directory for target files
if [ "target_dir" ]; then
  target_dir=$(cd "$target_dir" && pwd)
  export TARGET_DIR="$target_dir"
fi

# Path to application
app_dir="$1"
[ "app_dir" ] || error "Application directory is not specified"
if [ ! -d "$app_dir" ]; then
  app_name=$(basename $1)
  app_dir=$(cd "$main_dir/../user/applications/$app_name" && pwd)
else
  app_dir=$(cd "$app_dir" && pwd)
fi
export APPDIR="$app_dir"

# Build and flash the application
cd "$main_dir"
PLATFORM="${target_platform}" make clean all
