mirror of
https://github.com/opensiriusfox/bashrc.d.git
synced 2025-06-16 04:10:12 -07:00
80 lines
2.2 KiB
Bash
80 lines
2.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
|
|
|
|
__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
|