bashrc.d/0-builder

75 lines
2 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
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