#!/bin/bash
export IFS=$'\n'

BASHRC_D="$HOME/.bashrc.d"
COMPILED_SRC="$BASHRC_D/1-compiled"

################################################################################
# Setup the default build functions
export __BUILDER__WORKING_DIR="$BASHRC_D"
function __builder_prebuild { :; }
function __builder_postbuild { :; }

__builder_prebuild_exec() {
	pushd $__BUILDER__WORKING_DIR >/dev/null; printf '\e[34m'; 
	( __builder_prebuild; )
	printf '\e[0m'; popd >/dev/null
}

__builder_postbuild_exec() {
	pushd $__BUILDER__WORKING_DIR >/dev/null; printf '\e[34m'
	( __builder_postbuild; )
	printf '\e[0m'; popd >/dev/null
}

################################################################################
echo "Rebuilding $COMPILED_SRC"

echo """#!/bin/bash
# COMPILED AUTOMAGICALLY AT """$(date -I)"""

""" > $COMPILED_SRC

__HOSTNAME=$(hostname)
__HOSTNAME=${__HOSTNAME,,} # make it lowercase
HOST_SPECIFIC_META_SRC="$BASHRC_D/hostname/${__HOSTNAME}.meta.sh"
if [[ -e $HOST_SPECIFIC_META_SRC ]]; then
	echo "Executing host specific config file $HOST_SPECIFIC_META_SRC"
	source "$HOST_SPECIFIC_META_SRC"
else
	echo "No host specific file found at $HOST_SPECIFIC_META_SRC"
fi

__builder_prebuild_exec

SELF_SRC=$(readlink -f $0)
for F in $(find $BASHRC_D -maxdepth 1 -iname "*.sh"); do
	echo "  Building in $F"
	echo "##################" >> $COMPILED_SRC
	echo "# $(basename $F)" >> $COMPILED_SRC
	echo "##################" >> $COMPILED_SRC
	cat $F >> $COMPILED_SRC
	echo "" >> $COMPILED_SRC
done

HOST_SPECIFIC_SRC="$BASHRC_D/hostname/${__HOSTNAME}.sh"
if [[ -e $HOST_SPECIFIC_SRC ]]; then
	echo "Adding host specific file $HOST_SPECIFIC_SRC"
	echo "##################" >> $COMPILED_SRC
	echo "# $(basename $HOST_SPECIFIC_SRC)" >> $COMPILED_SRC
	echo "##################" >> $COMPILED_SRC
	cat $HOST_SPECIFIC_SRC >> $COMPILED_SRC
	echo "" >> $COMPILED_SRC
else
	echo "No host specific file found at $HOST_SPECIFIC_SRC"
fi


echo "##################" >> $COMPILED_SRC
echo "# Reloader Script" >> $COMPILED_SRC
echo """##################
function __rebuild_bashrcd() {
	bash \""""$SELF_SRC"""\"
	if [[ \$? -eq 0 && \"\${1}\" == '-a' ]]; then
		echo "Automatically loading compiled script."
		source \""""$(readlink -f "$COMPILED_SRC")"""\"
	fi
}
""" >> $COMPILED_SRC

__builder_postbuild_exec