#!/bin/bash

# Copyright 2021 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# A script to pack the config_file_ui app and deploy it to a DUT.

if [[ "${CROS_WORKON_SRCROOT}" = "" ]]; then
  echo "This script must run inside the CrOS SDK"
  exit 1
fi

SCRIPT_ROOT="${CROS_WORKON_SRCROOT}/src/scripts"
. "${SCRIPT_ROOT}/common.sh" || exit 1
. "${SCRIPT_ROOT}/remote_access.sh" || exit 1

#DEFINE_string remote "" "remote device to deploy to"
DEFINE_string remote_dir "/usr/local" "remote directory to deploy to"

# Parse command line.
FLAGS "$@" || exit 1
eval set -- "${FLAGS_ARGV}"

# Only now can we die on error.  shflags functions leak non-zero error codes,
# so will die prematurely if 'switch_to_strict_mode' is specified before now.
switch_to_strict_mode

GO_SRCROOT="${CROS_WORKON_SRCROOT}/src/platform2/camera/go/src"
PKG="chromiumos/camera/config_file_ui"
OUT_DIR="${GO_SRCROOT}/${PKG}/out"
STATIC_DIRS="css js templates setting_files"
APP_OUTPUT="${GO_SRCROOT}/${PKG}/app.sh"

cleanup() {
  cleanup_remote_access
  rm -rf "${TMP}"
  rm -rf "${OUT_DIR}"
}

build_gopkg() {
  info "Building app in ${OUT_DIR}..."

  rm -rf "${OUT_DIR}"
  mkdir -p "${OUT_DIR}"
  # TODO(jcliang): select the cross compiler based on the remote board.
  x86_64-cros-linux-gnu-go build -o "${OUT_DIR}" "${PKG}"

  for d in ${STATIC_DIRS}; do
    cp -r "${GO_SRCROOT}/${PKG}/${d}" "${OUT_DIR}"
  done
}

pack() {
  local app_head='#!/bin/bash
cleanup() {
  rm -rf "${TMP}"
}
main() {
  trap cleanup EXIT
  TMP=$(mktemp -d /usr/local/config_file_ui.XXXXXX)
  if [[ "${TMP}" = "" ]]; then
    exit 1
  fi
  pushd "${TMP}" || exit 1
  base64 -d << APP_EOF | tar -xj'

  local app_tail='APP_EOF
  "${TMP}"/config_file_ui
  popd || exit 1
}
main "$@"'

  info "Packing app into ${APP_OUTPUT}..."

  echo "${app_head}" > "${APP_OUTPUT}" || exit 1
  tar -cj -C "${OUT_DIR}" . | base64 >> "${APP_OUTPUT}" || exit 1
  echo "${app_tail}" >> "${APP_OUTPUT}" || exit 1
  chmod +x "${APP_OUTPUT}"
}

deploy() {
  remote_cp_to "${APP_OUTPUT}" "${FLAGS_remote_dir}"
  local remote_path="${FLAGS_remote}:${FLAGS_remote_dir}"
  info "Deployed app to ${remote_path}/$(basename "${APP_OUTPUT}")"
}

main() {
  if [[ "${FLAGS_remote}" = "" ]]; then
    die_notrace "remote unspecified"
  fi
  trap cleanup EXIT
  TMP=$(mktemp -d /tmp/deploy_dut.XXXXXX)
  remote_access_init
  build_gopkg
  pack
  deploy
}

main "$@"
