#! /bin/bash

set -e

# Capture some information about what we are generating for.
export CURRENT_OWNER="$(git remote get-url origin | sed -e's@/[^/]\+$@@' -e's@.*[:/]\([^:/]\+\)$@\1@')"

DBDIR=$PWD
TMPDIR=$(mktemp -d)

PYTHONHASHSEED=0

PRJXRAY_INFO_REVISION=$(grep "prjxray/commit" Info.md | sed -e's-.*/prjxray/commit/--' -e's/\([0-9a-fA-F]*\).*$/\1/')

echo
echo "Project X-Ray Database Revision $(git describe --long --tags --always)"
echo "--------------------------------------------"
git log -1
echo "--------------------------------------------"
echo

# Remove any pre-existing html output.
for d in html/*; do
	if [ -d "$d" ]; then
		rm -rf $d
	fi
done

REF=""
if [ -d ../prjxray/.git ]; then
	REF="--reference $(realpath $PWD/../prjxray/.git)"
fi

# Fetch Project X-ray so we can do the generation.
# Try a users version of the repo first, then try the SymbiFlow version if that fails.
if [ "$CURRENT_OWNER" != "SymbiFlow" ]; then
	git clone $REF https://github.com/$CURRENT_OWNER/prjxray.git $TMPDIR/prjxray || true
fi
if [ ! -d $TMPDIR/prjxray/.git ]; then
	git clone $REF https://github.com/SymbiFlow/prjxray.git $TMPDIR/prjxray
fi

# Output some information about the version of Project X-ray we are using.
(
	cd $TMPDIR/prjxray
	git fetch --tags
	git reset --hard $PRJXRAY_INFO_REVISION
	echo
	echo "Project X-Ray Revision $(git describe --long --tags --always)"
	echo "--------------------------------------------"
	echo "Info says version should be $(git describe --long --tags --always $PRJXRAY_INFO_REVISION) ($PRJXRAY_INFO_REVISION)"
	echo "--------------------------------------------"
	git log -1
	echo "--------------------------------------------"
	sha256sum htmlgen/htmlgen.py
	echo "--------------------------------------------"
	echo
	rm -rf database
	ln -s $DBDIR database
)

# Generate the HTML for each device we have a settings file for.
for SETTINGS in $TMPDIR/prjxray/settings/*.sh; do
	DEVICE="$(basename $SETTINGS .sh)"

	echo
	echo "Generating for $DEVICE"
	echo "--------------------------------------------"
	echo "settings.sh $(sha256sum $SETTINGS)"
	cat $SETTINGS
	echo "--------------------------------------------"
	python3 $TMPDIR/prjxray/htmlgen/htmlgen.py --settings=$SETTINGS
	echo "--------------------------------------------"
	cp -a $DEVICE/* ./html/$DEVICE/
	echo "--------------------------------------------"
	echo

	if [ -d $DEVICE/gridinfo ]; then
		echo
		echo "Setting up tile grid viewer JSON for $DEVICE"
		echo "--------------------------------------------"
		for F in svg-pan-zoom.js gridinfo.html; do
			cp -v $TMPDIR/prjxray/gridinfo/$F html/$DEVICE/gridinfo/
		done
		echo "--------------------------------------------"
		for GRID in html/$DEVICE/gridinfo/*.txt; do
			DEVICE_GRID="$(basename $GRID .txt)"
			echo
			echo "Creating tile grid viewer JSON for $DEVICE_GRID"
			echo "--------------------------------------------"
			python3 $TMPDIR/prjxray/gridinfo/gridinfo-txt2json.py html/$DEVICE/gridinfo/$DEVICE_GRID $DEVICE_GRID
			echo "--------------------------------------------"
		done
	fi

done

cp COPYING html/COPYING

# Generate the index page from the Info.md file
python3 -m markdown \
	-x markdown.extensions.fenced_code \
	-x markdown.extensions.tables \
	-x markdown.extensions.codehilite \
	-x markdown.extensions.toc \
	Info.md > html/index.html

# Output a summary of the generated stuff
(
	echo
	echo "HTML Results"
	echo "--------------------------------------------"
	sha256sum $(find html -type f | sort)
	echo "--------------------------------------------"
	echo
)
