#!/usr/bin/env bash

export REDIR_FILE="/dev/stderr"
export PYTHONHASHSEED=0

SCRIPT_SRC="$(realpath ${BASH_SOURCE[0]})"
SCRIPT_DIR="$(dirname "${SCRIPT_SRC}")"

source $SCRIPT_DIR/common.sh

if [ -z "$INPUT_DIRECTORY" ]; then
	if [ ! -z "$1" ]; then
		INPUT_DIRECTORY=$1
	else
		msg "No \$INPUT_DIRECTORY set or argument given."
		exit 1
	fi
fi
export INPUT_DIRECTORY
msg "Input directory: $INPUT_DIRECTORY"

if [ -z "$OUTPUT_DIRECTORY" ]; then
	if [ ! -z "$2" ]; then
		OUTPUT_DIRECTORY=$2
	else
		msg "No \$OUTPUT_DIRECTORY set or argument given."
		exit 1
	fi
fi
export OUTPUT_DIRECTORY
msg "Output directory: $OUTPUT_DIRECTORY"

TEMP_DIR=$(realpath ../tempdir)
if [ -d "$TEMP_DIR" ]; then
	msg "Temp directory exists!"
	exit 1
fi
export TEMP_DIR
msg "Temp directory: $TEMP_DIR"

set -x

mkdir -p $TEMP_DIR

# Remove the existing stuff
rm -rf $OUTPUT_DIRECTORY/libraries
mkdir $OUTPUT_DIRECTORY/libraries

# Output the status.
DATE=$(date --iso-8601=seconds)
SAFE_DATE=$(echo $DATE | sed -e's/[T+]/_/g' -e's/://g' -e's/[^0-9A-Za-z_]/-/g')
msg "Run start on $DATE"
echo "----------------------------"

echo > $OUTPUT_DIRECTORY/build-tool-version

AUDIT_VERSION=$(git describe)
msg "Audit repo version: $AUDIT_VERSION"
echo "audit: $AUDIT_VERSION" >> $OUTPUT_DIRECTORY/build-tool-version

MAGIC_VERSION=$(magic --version)
msg "Magic version: $MAGIC_VERSION"
echo "magic: $MAGIC_VERSION" >> $OUTPUT_DIRECTORY/build-tool-version

SRC_VERSION=$(cd $INPUT_DIRECTORY; git describe)
msg "SRC version: $SRC_VERSION"
echo "src: $SRC_VERSION" >> $OUTPUT_DIRECTORY/build-tool-version

echo "---------------------"
cat $OUTPUT_DIRECTORY/build-tool-version
echo "---------------------"

export DESCRIBE=audit-${AUDIT_VERSION}_magic-${MAGIC_VERSION}_$SAFE_DATE
msg "Run output version $DESCRIBE"

# Copy accross the template files
msg "Copying template files."
$SCRIPT_DIR/template-files.py $INPUT_DIRECTORY $OUTPUT_DIRECTORY $TEMP_DIR ; RETCODE=$?
if [ "$RETCODE" -ne 0 ]; then
	msg "Error: Failed to copy template files!?"
	exit 1
else
	msg "Successfully copied template files."
fi

# Convert the spice models
msg "Converting spice models."
$SCRIPT_DIR/run-spice.sh $INPUT_DIRECTORY $OUTPUT_DIRECTORY $TEMP_DIR/spice; RETCODE=$?
if [ "$RETCODE" -ne 0 ]; then
	msg "Error: Failed to convert spice files!?"
	exit 1
else
	msg "Successfully converted spice files."
fi

source $SCRIPT_DIR/run/run-cdl-lef.inc.sh
source $SCRIPT_DIR/run/run-gds.inc.sh
source $SCRIPT_DIR/run/run-verilog.inc.sh
source $SCRIPT_DIR/run/run-liberty.inc.sh

# Remove the .pins files
find $OUTPUT_DIRECTORY -name *.pins -delete

git describe
git diff HEAD

msg "Doing git operations."
(
	cd $OUTPUT_DIRECTORY
	git add -A
	git diff HEAD --stat
	git commit -m"Built based on $DESCRIBE (with src)"
	git push origin master:"master-$DESCRIBE-src"
	echo
	find -name *.src -exec git rm \{\} \+
	git commit --amend -m"Built based on $DESCRIBE (without src)"
	git push origin master:"master-$DESCRIBE"
	sleep 1
	git push origin master:"master-$DESCRIBE"
)
msg "Finished git operations."

msg "FINISHED: Build completed successfully @ $(date) using $AUDIT_VERSION (magic: $MAGIC_VERSION) (started @ $DATE)."
