-
Notifications
You must be signed in to change notification settings - Fork 2.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1902 from gaelicWizard/glob
Glob for *.bash properly when path contains spaces
- Loading branch information
Showing
1 changed file
with
52 additions
and
86 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,145 +1,111 @@ | ||
#!/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: " | ||
|
||
# Only set $BASH_IT if it's not already set | ||
if [ -z "${BASH_IT:-}" ]; then | ||
# Setting $BASH to maintain backwards compatibility | ||
export BASH_IT=$BASH | ||
BASH="$(bash -c 'echo $BASH')" | ||
export BASH | ||
BASH_IT_OLD_BASH_SETUP=true | ||
fi | ||
: "${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 disable=SC1090 | ||
source "${BASH_IT}"/vendor/github.com/erichs/composure/composure.sh | ||
# 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 | ||
declare -a _bash_it_library_finalize_hook | ||
# 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 | ||
# shellcheck source-path=SCRIPTDIR/lib | ||
source "${BASH_IT}/lib/log.bash" | ||
|
||
# We can only log it now | ||
[ -z "${BASH_IT_OLD_BASH_SETUP:-}" ] || _log_warning "BASH_IT variable not initialized, please upgrade your bash-it version and reinstall it!" | ||
|
||
# For backwards compatibility, look in old BASH_THEME location | ||
if [ -z "${BASH_IT_THEME:-}" ]; then | ||
_log_warning "BASH_IT_THEME variable not initialized, please upgrade your bash-it version and reinstall it!" | ||
export BASH_IT_THEME="${BASH_THEME:-}" | ||
unset BASH_THEME | ||
fi | ||
|
||
# support 'plumbing' metadata | ||
cite _about _param _example _group _author _version | ||
cite about-alias about-plugin about-completion | ||
|
||
# libraries, but skip appearance (themes) for now | ||
_log_debug "Loading libraries(except appearance)..." | ||
LIB="${BASH_IT}/lib/*.bash" | ||
APPEARANCE_LIB="${BASH_IT}/lib/appearance.bash" | ||
for _bash_it_config_file in $LIB; do | ||
if [ "$_bash_it_config_file" != "$APPEARANCE_LIB" ]; then | ||
filename=${_bash_it_config_file##*/} | ||
filename=${filename%.bash} | ||
BASH_IT_LOG_PREFIX="lib: ${filename}: " | ||
_log_debug "Loading library file..." | ||
# shellcheck disable=SC1090 | ||
source "$_bash_it_config_file" | ||
fi | ||
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 | ||
|
||
BASH_IT_LOG_PREFIX="core: main: " | ||
# Load the global "enabled" directory | ||
# "family" param is empty so that files get sources in glob order | ||
# shellcheck source=./scripts/reloader.bash | ||
source "${BASH_IT}/scripts/reloader.bash" | ||
|
||
# Load enabled aliases, completion, plugins | ||
for file_type in "aliases" "plugins" "completion"; do | ||
# shellcheck source=./scripts/reloader.bash | ||
source "${BASH_IT}/scripts/reloader.bash" "skip" "$file_type" | ||
# 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: " | ||
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 | ||
if [[ -n "${BASH_IT_THEME}" ]]; then | ||
_log_debug "Loading \"${BASH_IT_THEME}\" theme..." | ||
# shellcheck source-path=SCRIPTDIR/themes | ||
if [[ -n "${BASH_IT_THEME:-}" ]]; then | ||
_log_debug "Loading theme '${BASH_IT_THEME}'." | ||
BASH_IT_LOG_PREFIX="themes: githelpers: " | ||
# shellcheck source=./themes/githelpers.theme.bash | ||
source "${BASH_IT}/themes/githelpers.theme.bash" | ||
BASH_IT_LOG_PREFIX="themes: p4helpers: " | ||
# shellcheck source=./themes/p4helpers.theme.bash | ||
source "${BASH_IT}/themes/p4helpers.theme.bash" | ||
BASH_IT_LOG_PREFIX="themes: command_duration: " | ||
# shellcheck source=./themes/command_duration.theme.bash | ||
source "${BASH_IT}/themes/command_duration.theme.bash" | ||
BASH_IT_LOG_PREFIX="themes: base: " | ||
# shellcheck source=./themes/base.theme.bash | ||
source "${BASH_IT}/themes/base.theme.bash" | ||
|
||
BASH_IT_LOG_PREFIX="lib: appearance: " | ||
# appearance (themes) now, after all dependencies | ||
# shellcheck source=./lib/appearance.bash | ||
# shellcheck source=SCRIPTDIR/lib/appearance.bash | ||
source "$APPEARANCE_LIB" | ||
BASH_IT_LOG_PREFIX="core: main: " | ||
fi | ||
|
||
BASH_IT_LOG_PREFIX="core: main: " | ||
_log_debug "Loading custom aliases, completion, plugins..." | ||
for file_type in "aliases" "completion" "plugins"; do | ||
if [ -e "${BASH_IT}/${file_type}/custom.${file_type}.bash" ]; then | ||
BASH_IT_LOG_PREFIX="${file_type}: custom: " | ||
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}/${file_type}/custom.${file_type}.bash" | ||
source "${_bash_it_main_file_custom}" | ||
fi | ||
BASH_IT_LOG_PREFIX="core: main: " | ||
done | ||
|
||
# Custom | ||
BASH_IT_LOG_PREFIX="core: main: " | ||
_log_debug "Loading general custom files..." | ||
CUSTOM="${BASH_IT_CUSTOM:=${BASH_IT}/custom}/*.bash ${BASH_IT_CUSTOM:=${BASH_IT}/custom}/**/*.bash" | ||
for _bash_it_config_file in $CUSTOM; do | ||
if [ -e "${_bash_it_config_file}" ]; then | ||
filename=$(basename "${_bash_it_config_file}") | ||
filename=${filename%*.bash} | ||
# shellcheck disable=SC2034 | ||
BASH_IT_LOG_PREFIX="custom: $filename: " | ||
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_config_file" | ||
source "$_bash_it_main_file_custom" | ||
fi | ||
BASH_IT_LOG_PREFIX="core: main: " | ||
done | ||
|
||
unset _bash_it_config_file | ||
if [[ -n "${PROMPT:-}" ]]; then | ||
export PS1="\[""$PROMPT""\]" | ||
PS1="${PROMPT}" | ||
fi | ||
|
||
# Adding Support for other OSes | ||
PREVIEW="less" | ||
|
||
if [ -s /usr/bin/gloobus-preview ]; then | ||
if _command_exists gloobus-preview; then | ||
PREVIEW="gloobus-preview" | ||
elif [ -s /Applications/Preview.app ]; then | ||
# shellcheck disable=SC2034 | ||
elif [[ -d /Applications/Preview.app ]]; then | ||
PREVIEW="/Applications/Preview.app" | ||
else | ||
PREVIEW="less" | ||
fi | ||
|
||
# BASH_IT_RELOAD_LEGACY is set. | ||
if ! _command_exists reload && [[ -n "${BASH_IT_RELOAD_LEGACY:-}" ]]; then | ||
case $OSTYPE in | ||
darwin*) | ||
alias reload='source ~/.bash_profile' | ||
;; | ||
*) | ||
alias reload='source ~/.bashrc' | ||
;; | ||
esac | ||
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_@}" | ||
unset "${!_bash_it_library_finalize_@}" "${!_bash_it_main_file_@}" |