#!/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 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""" } """ >> $COMPILED_SRC __builder_postbuild_exec