#!/usr/bin/env bash

set -e

SCRIPT_DIR=$(cd $(dirname $0) && pwd)
BASEDIR=$(dirname $SCRIPT_DIR)
source $SCRIPT_DIR/config.env

VERSION=${VERSION:-0000.00}

GOOS=${GOOS:-linux}

rm $PKG_OUTPUT/* -f
mkdir -p "$PKG_OUTPUT"

function build_agent() {
  local arch
  arch=$1
  cd $BASEDIR

  if [[ $arch == "arm" ]]; then
    make VERSION=$VERSION GOOS=$GOOS GOARCH=$arch GOARM=5
  else
    make VERSION=$VERSION GOOS=$GOOS GOARCH=$arch
  fi

  mv ./bin/qbee-agent ./bin/qbee-agent-$arch
}

function build_package() {
  local arch
  local build_dir
  local pkg_type

  arch=$1
  build_dir=$2
  pkg_type=$3

  temp_expr="arch_$pkg_type[$arch]"
  pkg_arch=${!temp_expr}

  fpm -a ${pkg_arch} \
    -s dir \
    -t $pkg_type \
    -n qbee-agent \
    --version "$VERSION" \
    -m "The Qbee Team <support@qbee.io>" \
    --url "https://qbee.io" \
    --license "Apache-2.0" \
    --description "Qbee agent
Qbee is a lightweight system management platform for IoT devices" \
    -p $PKG_OUTPUT \
    -C $build_dir \
    --after-install $build_dir/postinst \
    --before-install $build_dir/preinst \
    --before-remove $build_dir/prerm-${pkg_type} \
    usr lib opt
}

function build_multiarch_tarball(){
  build_dir=$(mktemp -d /tmp/qbee-agent.tarball.XXXXXXXX)
  mkdir -p $build_dir/qbee-agent-${VERSION}
  rm ${TAR_OUTPUT}/* -f 
  mkdir -p ${TAR_OUTPUT}

  cp -a $BASEDIR/bin/* $BASEDIR/package/share $BASEDIR/package/bin \
    $BASEDIR/package/init-scripts $build_dir/qbee-agent-${VERSION} 
  fpm -t tar -n qbee-agent-${VERSION} -s dir -C ${build_dir} -p ${TAR_OUTPUT}
  gzip ${TAR_OUTPUT}/qbee-agent-${VERSION}.tar
}

cd $BASEDIR


for arch in "${SUPPORTED_ARCHS[@]}"; do
  echo $arch
  
  build_agent $arch

  build_dir=$(mktemp -d /tmp/qbee-agent.$arch.XXXXXXXX)

  # Copy binary for arch in package build dir
  mkdir -p $build_dir/usr/bin
  cp $BASEDIR/bin/qbee-agent-$arch $build_dir/usr/bin/qbee-agent

  # Copy opt files
  mkdir -p $build_dir/opt/qbee
  cp -a $BASEDIR/package/bin $BASEDIR/package/share $build_dir/opt/qbee
 
  # Copy service description
  mkdir -p $build_dir/lib/systemd/system
  cp -a $BASEDIR/package/init-scripts/systemd/* $build_dir/lib/systemd/system

  # Copy install scripts

  cp -a $BASEDIR/package/install-scripts/* $build_dir

  # Set perms
  chmod 755 $build_dir/usr/bin/*
  chmod 644 $build_dir/lib/systemd/system/*

  for pkg_type in "${SUPPORTED_PKG_FMTS[@]}"; do
    set -x
    build_package $arch $build_dir $pkg_type
  done
  
  find $build_dir -ls
  rm $build_dir -rf
done

build_multiarch_tarball
