#!/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
$SCRIPT_DIR/gds-preview.sh $INPUT_DIRECTORY $OUTPUT_DIRECTORY $TEMP_DIR sky130_fd_pr || exit 1
$SCRIPT_DIR/gds-preview.sh $INPUT_DIRECTORY $OUTPUT_DIRECTORY $TEMP_DIR sky130_fd_sc_ || exit 1
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_BRANCH=$(git rev-parse --abbrev-ref HEAD)
	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 $GIT_BRANCH:"master-$DESCRIBE"
	sleep 1
	git push origin $GIT_BRANCH:"master-$DESCRIBE"
)
msg "Finished git operations."

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