113 lines
4.1 KiB
Bash
Executable File
113 lines
4.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# shellcheck source-path=SCRIPTDIR/lib source-path=SCRIPTDIR/scripts
|
|
# shellcheck disable=SC2034
|
|
#
|
|
# Initialize Bash It
|
|
BASH_IT_LOG_PREFIX="core: main: "
|
|
: "${BASH_IT:=${BASH_SOURCE%/*}}"
|
|
: "${BASH_IT_CUSTOM:=${BASH_IT}/custom}"
|
|
: "${CUSTOM_THEME_DIR:="${BASH_IT_CUSTOM}/themes"}"
|
|
: "${BASH_IT_BASHRC:=${BASH_SOURCE[${#BASH_SOURCE[@]} - 1]}}"
|
|
|
|
# Load composure first, so we support function metadata
|
|
# shellcheck source-path=SCRIPTDIR/vendor/github.com/erichs/composure
|
|
source "${BASH_IT}/vendor/github.com/erichs/composure/composure.sh"
|
|
# support 'plumbing' metadata
|
|
cite _about _param _example _group _author _version
|
|
cite about-alias about-plugin about-completion
|
|
|
|
# Declare our end-of-main finishing hook, but don't use `declare`/`typeset`
|
|
_bash_it_library_finalize_hook=()
|
|
|
|
# We need to load logging module early in order to be able to log
|
|
source "${BASH_IT}/lib/log.bash"
|
|
|
|
# libraries, but skip appearance (themes) for now
|
|
_log_debug "Loading libraries(except appearance)..."
|
|
APPEARANCE_LIB="${BASH_IT}/lib/appearance.bash"
|
|
for _bash_it_main_file_lib in "${BASH_IT}/lib"/*.bash; do
|
|
[[ "$_bash_it_main_file_lib" == "$APPEARANCE_LIB" ]] && continue
|
|
_bash-it-log-prefix-by-path "${_bash_it_main_file_lib}"
|
|
_log_debug "Loading library file..."
|
|
# shellcheck disable=SC1090
|
|
source "$_bash_it_main_file_lib"
|
|
BASH_IT_LOG_PREFIX="core: main: "
|
|
done
|
|
|
|
# Load the global "enabled" directory, then enabled aliases, completion, plugins
|
|
# "_bash_it_main_file_type" param is empty so that files get sourced in glob order
|
|
for _bash_it_main_file_type in "" "aliases" "plugins" "completion"; do
|
|
BASH_IT_LOG_PREFIX="core: reloader: "
|
|
# shellcheck disable=SC2140
|
|
source "${BASH_IT}/scripts/reloader.bash" ${_bash_it_main_file_type:+"skip" "$_bash_it_main_file_type"}
|
|
BASH_IT_LOG_PREFIX="core: main: "
|
|
done
|
|
|
|
# Load theme, if a theme was set
|
|
# shellcheck source-path=SCRIPTDIR/themes
|
|
if [[ -n "${BASH_IT_THEME:-}" ]]; then
|
|
_log_debug "Loading theme '${BASH_IT_THEME}'."
|
|
BASH_IT_LOG_PREFIX="themes: githelpers: "
|
|
source "${BASH_IT}/themes/githelpers.theme.bash"
|
|
BASH_IT_LOG_PREFIX="themes: p4helpers: "
|
|
source "${BASH_IT}/themes/p4helpers.theme.bash"
|
|
BASH_IT_LOG_PREFIX="themes: command_duration: "
|
|
source "${BASH_IT}/themes/command_duration.theme.bash"
|
|
BASH_IT_LOG_PREFIX="themes: base: "
|
|
source "${BASH_IT}/themes/base.theme.bash"
|
|
|
|
BASH_IT_LOG_PREFIX="lib: appearance: "
|
|
# appearance (themes) now, after all dependencies
|
|
# shellcheck source=SCRIPTDIR/lib/appearance.bash
|
|
source "$APPEARANCE_LIB"
|
|
BASH_IT_LOG_PREFIX="core: main: "
|
|
fi
|
|
|
|
_log_debug "Loading custom aliases, completion, plugins..."
|
|
for _bash_it_main_file_type in "aliases" "completion" "plugins"; do
|
|
_bash_it_main_file_custom="${BASH_IT}/${_bash_it_main_file_type}/custom.${_bash_it_main_file_type}.bash"
|
|
if [[ -s "${_bash_it_main_file_custom}" ]]; then
|
|
_bash-it-log-prefix-by-path "${_bash_it_main_file_custom}"
|
|
_log_debug "Loading component..."
|
|
# shellcheck disable=SC1090
|
|
source "${_bash_it_main_file_custom}"
|
|
fi
|
|
BASH_IT_LOG_PREFIX="core: main: "
|
|
done
|
|
|
|
# Custom
|
|
_log_debug "Loading general custom files..."
|
|
for _bash_it_main_file_custom in "${BASH_IT_CUSTOM}"/*.bash "${BASH_IT_CUSTOM}"/*/*.bash; do
|
|
if [[ -s "${_bash_it_main_file_custom}" ]]; then
|
|
_bash-it-log-prefix-by-path "${_bash_it_main_file_custom}"
|
|
_log_debug "Loading custom file..."
|
|
# shellcheck disable=SC1090
|
|
source "$_bash_it_main_file_custom"
|
|
fi
|
|
BASH_IT_LOG_PREFIX="core: main: "
|
|
done
|
|
|
|
if [[ -n "${PROMPT:-}" ]]; then
|
|
PS1="${PROMPT}"
|
|
fi
|
|
|
|
# Adding Support for other OSes
|
|
if _command_exists gloobus-preview; then
|
|
PREVIEW="gloobus-preview"
|
|
elif [[ -d /Applications/Preview.app ]]; then
|
|
PREVIEW="/Applications/Preview.app"
|
|
else
|
|
PREVIEW="less"
|
|
fi
|
|
|
|
# BASH_IT_RELOAD_LEGACY is set.
|
|
if [[ -n "${BASH_IT_RELOAD_LEGACY:-}" ]] && ! _command_exists reload; then
|
|
# shellcheck disable=SC2139
|
|
alias reload="builtin source '${BASH_IT_BASHRC?}'"
|
|
fi
|
|
|
|
for _bash_it_library_finalize_f in "${_bash_it_library_finalize_hook[@]:-}"; do
|
|
eval "${_bash_it_library_finalize_f?}" # Use `eval` to achieve the same behavior as `$PROMPT_COMMAND`.
|
|
done
|
|
unset "${!_bash_it_library_finalize_@}" "${!_bash_it_main_file_@}"
|