# path where the scripts and data will be based install_path="$INSTALL_ROOT/${SCRIPT_BASE#/}" # strip any unnecessary trailing '/' from install_path install_path="${install_path%/}" # path where the config files and etc. will be based etc_path="$INSTALL_ROOT/${ETC_BASE#/}" # strip any unnecessary trailing '/' from etc_path etc_path="${etc_path%/}" #-------------- # installation functions #-------------- function install_dir() { local dir="$1" local dest="${2:-$install_path}" # create the directory install -v -d -m 0755 "$dest/$dir" } function install_dir_files() { local dir="$1" local dest="${2:-$install_path}" # install all the files in the provided dir (no child directories) find "$dir" -maxdepth 1 -type f -exec install -v -m 0644 -t "$dest" '{}' \; } function install_dir_single() { local dir="$1" local dest="${2:-$install_path}" # create the directory install_dir "$dir" "$dest" && #install -v -d -m 0755 "$dest/$dir" && # install all the files in it (no child directories) install_dir_files "$dir" "$dest/$dir" #find "$dir" -maxdepth 1 -type f -exec install -v -m 0644 '{}' "$dest"/'{}' \; } function install_dir_recursive() { local dir="$1" local dest="${2:-$install_path}" # create the parent and all child directories find "$dir" -type d -exec install -v -d -m 0755 "$dest"/'{}' \; && # install all the files for the directories find "$dir" -type f -exec install -v -m 0644 '{}' "$dest"/'{}' \; } #-------------- # common libraries #-------------- function install_common() { # install the common libraries install_dir "common" "$install_path" install_dir_files "lib" "$install_path/common" } #-------------- # cauldron #-------------- function install_cauldron() { # install the ISO filesystem cleaners install_dir_single "cauldron/cleaners" } #-------------- # enchantment #-------------- function install_enchantment() { # install the installer modules install_dir_recursive "enchantment/modules" && # install the selected installer interfaces for installer in ${INTERFACES[@]} do install_dir_recursive "enchantment/$installer" done } #-------------- # MAIN #-------------- install_common && for selected in ${CHOSEN_SCRIPTS[@]} do # install the library and data files install_dir_single "$selected" && # install the config file(s) install_dir "$selected" "$etc_path" && pushd "$selected/etc" && install_dir_recursive "." "$etc_path/$selected" && popd && # install any man pages if [[ "$DOCUMENTATION" = 'y' ]] then for manpage in $(find "$selected/doc" -name '*.[1-8]') do # make sure the man dir exists for the needed category first install -v -d -m 0755 "/usr/share/man/man${manpage##*.}" && # install the man page install -v -m 0644 "$manpage" "/usr/share/man/man${manpage##*.}/" done fi && # perform any specific install procedures for the selected scripts "install_${selected}" done