#!/bin/bash

set -exu

DOWNLOAD_SERVER="${download_server}"
CONFIG=$(cat ${config_path})
JSON="$1"
ARGS="$2"
REPO_NAME=$(jq -r .repository.name <<< $JSON)
CLONE_URL=$(jq -r .repository.clone_url <<< $JSON)
BUILD_FILE=$(jq -r .file <<< $ARGS)
DATE=$(date --utc +%s)
SSH_OPTIONS='-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'

cd ~
rm -rf "$REPO_NAME"
git clone "$CLONE_URL"
cd "$REPO_NAME"
shards install

for ARCH in $(jq -r '.architectures | keys[]' <<< $CONFIG)
do
  TARGET=$(jq -r .architectures.$ARCH.target <<< $CONFIG)
  BINARY="$REPO_NAME-$ARCH-$DATE"

  # static, so the binary does not depend on the libraries of a debian release
  crystal build "$BUILD_FILE" --static --release --target="$TARGET" -o "$BINARY"

  ssh $SSH_OPTIONS "downloads@$DOWNLOAD_SERVER" mkdir -p "~/$REPO_NAME"
  scp $SSH_OPTIONS "$BINARY" "downloads@$DOWNLOAD_SERVER:~/$REPO_NAME/$BINARY"
  ssh $SSH_OPTIONS "downloads@$DOWNLOAD_SERVER" ln -sf "$BINARY" "~/$REPO_NAME/$REPO_NAME-$ARCH-latest"
done
