#!/bin/bash
# Builds and uploads a debian package for CT frontend.
APPNAME=ctfe

set -x -e

# Copy files into the right locations in ${ROOT}.
copy_release_files()
{
INSTALL="install -D --verbose --backup=none"
INSTALL_DIR="install -d --verbose --backup=none"

# Copy over the Dockerfile.
${INSTALL}     --mode=644 -T ${APPNAME}/Dockerfile         ${ROOT}/Dockerfile

# Copy over the ctfe binary.
${INSTALL}     --mode=755 -T ${GOPATH}/bin/ctfe            ${ROOT}/usr/local/bin/${APPNAME}

# Copy over all frontend artifacts.
${INSTALL_DIR} --mode=755                                  ${ROOT}/usr/local/share/${APPNAME}/dist
${INSTALL}     --mode=644    ./dist/*                      ${ROOT}/usr/local/share/${APPNAME}/dist
${INSTALL}     --mode=644 -T ./res/img/favicon.ico         ${ROOT}/usr/local/share/${APPNAME}/dist/img/favicon.ico

# Copy over the isolate files and python scripts.
${INSTALL_DIR} --mode=755                            ${ROOT}/usr/local/share/${APPNAME}/isolates
${INSTALL}     --mode=644 ./isolates/*               ${ROOT}/usr/local/share/${APPNAME}/isolates
${INSTALL_DIR} --mode=755                            ${ROOT}/usr/local/share/${APPNAME}/py
${INSTALL}     --mode=644 ./py/*.py                  ${ROOT}/usr/local/share/${APPNAME}/py
${INSTALL_DIR} --mode=755                            ${ROOT}/usr/local/share/${APPNAME}/py/html-templates
${INSTALL}     --mode=644 ./py/html-templates/*.html ${ROOT}/usr/local/share/${APPNAME}/py/html-templates


# Copy over all master scripts.
for master_script in ./go/master_scripts/*; do
  master_script_name=$(basename "$master_script")
  master_script_binary=${GOPATH}/bin/$master_script_name
  if [ -e "$master_script_binary" ]; then
    ${INSTALL} --mode=755 -T $master_script_binary ${ROOT}/usr/local/bin/$master_script_name
  fi
done

# Copy over all worker scripts.
for worker_script in ./go/worker_scripts/*; do
  worker_script_name=$(basename "$worker_script")
  worker_script_binary=${GOPATH}/bin/$worker_script_name
  if [ -e "$worker_script_binary" ]; then
    ${INSTALL} --mode=755 -T $worker_script_binary ${ROOT}/usr/local/bin/$worker_script_name
  fi
done

# Copy over the windows executables.
${INSTALL}     --mode=755 -T ${GOPATH}/bin/build_repo.exe            ${ROOT}/usr/local/bin/build_repo.exe
${INSTALL}     --mode=755 -T ${GOPATH}/bin/isolate_telemetry.exe     ${ROOT}/usr/local/bin/isolate_telemetry.exe
${INSTALL}     --mode=755 -T ${GOPATH}/bin/run_chromium_analysis.exe ${ROOT}/usr/local/bin/run_chromium_analysis.exe
${INSTALL}     --mode=755 -T ${GOPATH}/bin/run_chromium_perf.exe     ${ROOT}/usr/local/bin/run_chromium_perf.exe

}

source ../bash/docker_build.sh
