#!/bin/bash

die () {
	echo "error: $@" >&2
	exit 128
}

TRCE="$1"
if [ -z "$TRCE" ]; then
	die "Missing TRCE"
fi

DIR="$2"
if [ -z "$DIR" ]; then
	die "Missing directory"
fi
DIR="$(realpath "$DIR")"

PROJECT="$3"
if [ -z "$PROJECT" ]; then
	die "Missing directory"
fi

FPGA_CHIP="$4"
if [ -z "$FPGA_CHIP" ]; then
	die "Missing FPGA_CHIP"
fi

shift 4

t=
trap "rm -rf -- \"\$t\"" EXIT
t="$(mktemp -d)" || die "can't create temp dir"

cp -- "$@" "$t"

cd "$t" || die "cd"

mkdir -p xilinx/projnav.tmp
mkdir -p xilinx/_ngo
mkdir -p "$DIR"/logs

if ! "${TRCE}" -v 3 -s 4 -n 3 -fastpaths -xml ${PROJECT} ${PROJECT}.ncd \
		-o ${PROJECT}.twr ${PROJECT}.pcf > "${PROJECT}.trce.log"; then
	cp "${PROJECT}".trce.log "$DIR"/logs
	cat ${PROJECT}.trce.log
	exit 128
fi
cp "${PROJECT}".trce.log "$DIR"/logs

[ -r "${PROJECT}".twx ] || die "missing twx file"
cp "${PROJECT}".twx "$DIR"

exit 0
