#!/bin/bash -e module_loading=$(cat <<\MODULE current_dir=$(pwd) cd modules/kickstart source install.sh cd "$current_dir" for module in modules/*; do if [ ! "$module" = module/kickstart ]; then cd "$module" source install.sh cd "$current_dir" fi done MODULE ) clean_up_compile_folder() { [ -d compile ] && rm -rf compile mkdir -p compile } link_folder() { [[ -h compile/"$1" ]] || ln -s ../"$1" compile/"$1" } link_modules() { mkdir -p compile/modules ln -s "$(kickstart root-dir)"/kickstart compile/modules/kickstart if [ -d modules ]; then for module in modules/*; do ln -s "$(pwd)"/"$module" compile/"$module" done fi } compile_install() { cat <( echo -e "$module_loading" ) install.sh > compile/install.sh for role in "$@"; do echo "source roles/${role}.sh" >> compile/install.sh done } clean_up_compile_folder link_folder files link_folder recipes link_folder roles link_modules compile_install "$@" echo -e "\necho Done" >> compile/install.sh