88 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/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
 | 
						|
}
 | 
						|
 | 
						|
function -reload-bashrc() {
 | 
						|
	export BASHRC_RELOAD_COUNTER=\$((\${BASHRC_RELOAD_COUNTER:-0}+1))
 | 
						|
	if [[ \$BASHRC_RELOAD_COUNTER -gt 1 ]]; then echo "reload count: \$BASHRC_RELOAD_COUNTER"; fi
 | 
						|
	source ~/.bashrc
 | 
						|
}
 | 
						|
alias __bashrc_reload='-reload-bashrc'
 | 
						|
 | 
						|
""" >> $COMPILED_SRC
 | 
						|
 | 
						|
__builder_postbuild_exec
 |