#!/bin/bash

set -x -e

# Packages the skia_diff_server.
ALL_IDS="prod"
print_usage() {
    echo "Usage: $0 MESSAGE INSTANCE_ID"
    echo "     MESSAGE     is the message to be included in the release package."
    echo "     INSTANCE_ID is the id of the instance targeted by this package."
    echo "                 This should be one of: '$ALL_IDS' or 'all'."
    exit 1
}
if [ "$#" -ne 2 ]; then
    print_usage
fi

TARGET_INSTANCE_IDS=$2

# Strip the second argument to keep this compatible with the shared build script.
set -- "$1"

# Determine the instance ids we want to build
if [ "$TARGET_INSTANCE_IDS" = "all" ]; then
  TARGET_INSTANCE_IDS=$ALL_IDS
fi

for INSTANCE_ID in $TARGET_INSTANCE_IDS; do
  APPNAME=diffserver-$INSTANCE_ID
  SERVICE_FILE="./sys/${APPNAME}.service"
  if [ ! -f ${SERVICE_FILE} ]; then
      exit 1
  fi

  # Builds and uploads a debian package for skiacorrectness.
  SYSTEMD="${APPNAME}.service"
  DESCRIPTION="Image diffs and processing server."

  DEPENDS=git

  # Copy files into the right locations in ${ROOT}.
  copy_release_files()
  {
  set -e

  INSTALL="fakeroot install -D --verbose --backup=none --group=root --owner=root"
  INSTALL_DIR="fakeroot install -d --verbose --backup=none --group=root --owner=root"

  ${INSTALL}     --mode=755 -T ${GOPATH}/bin/skia_diff_server      ${ROOT}/usr/local/bin/${APPNAME}
  ${INSTALL}     --mode=644 -T $SERVICE_FILE                       ${ROOT}/etc/systemd/system/${APPNAME}.service
  }

  source ../bash/release.sh
done