#!/usr/bin/env bash

set -euo pipefail

if [[ $# -ne 0 ]]; then
  echo "usage: $0" >&2
  exit 2
fi

install_root=${QK_DEV_INSTALL_ROOT:-"$HOME/.local/share/qk"}
command_bin_directory=${QK_DEV_BIN_DIR:-"$HOME/.local/bin"}
bin_directory="$install_root/bin"

mkdir -p "$bin_directory" "$install_root/libs" "$command_bin_directory"
GOBIN="$bin_directory" go install -trimpath ./cmd/qkc
cp -a libs/. "$install_root/libs/"

command_link="$command_bin_directory/qkc"
if [[ -e $command_link && ! -L $command_link ]]; then
  rm -f -- "$command_link"
fi
ln -sfn "$bin_directory/qkc" "$command_link"

smoke_directory=$(mktemp -d)
cleanup() {
  rm -rf -- "$smoke_directory"
}
trap cleanup EXIT
printf 'module main\n\nlet main() { assert(true, "installed libraries") }\n' >"$smoke_directory/main.qk"
"$command_link" build -no-emit "$smoke_directory"

echo "installed qkc to $bin_directory/qkc"
echo "installed QK libraries to $install_root/libs"
echo "linked $command_link -> $bin_directory/qkc"