* CI: disable Ubuntu 16.04 as it's EOL https://github.blog/changelog/2021-04-29-github-actions-ubuntu-16-04-lts-virtual-environment-will-be-removed-on-september-20-2021/ * main: lint false positive * install: lint * plugins/cmd-returned-notify: don't `export` * plugins/xterm: lint * plugins/git: lint * plugins/goenv: lint * plugins/alias-completion: lint false positives * plugins/alias-completion: fix SC2155, SC2154 Declare `locals` at the top of the function * completion: lint completions using `bash_completion` functions Match the style of the existing code * completion/knife: lint false positives * completion/knife: lint * completion/sdkman: lint * completion/composer: lint * Move `.shellcheckrc` under `themes/` * lib/theme: fix SC2155, SC2154, SC2034 * lib/colors: don't warn on unused variables We assign a large number of variables here and they may or may not be used anywhere else, so disable SC2034 for this file (only). Alsö disable SC2005 as the functions in this file were written before `printf` was invented and have to do some fancy metascripting to get escape sequences interpreted reliably. I’m not smart enough to fix this to use `printf`, so leave it for now. * themes/agnoster: lint * themes: disable SC2154 for colors Each one of these themes will need it’s own fix for SC2154, possibly upstream. Due to the way themes are, it's entirely normal to have a *lot* of false positives for SC2034. So much so, that I have to admit that it is probably just not worth linting for SC2034 despite my dislike of blanket ignore rules. * themes: disable SC2154, fix SC2155 Each one of these themes will need it’s own fix for SC2154, possibly upstream. Due to the way themes are, it's entirely normal to have a *lot* of false positives for SC2034. So much so, that I have to admit that it is probably just not worth linting for SC2034 despite my dislike of blanket ignore rules. * Delete `.shellcheckrc` * remove executable bit
161 lines
5.0 KiB
Bash
Executable File
161 lines
5.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# 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
|
|
|
|
# Load composure first, so we support function metadata
|
|
# shellcheck disable=SC1090
|
|
source "${BASH_IT}"/vendor/github.com/erichs/composure/composure.sh
|
|
|
|
# We need to load logging module first as well in order to be able to log
|
|
# shellcheck source=./lib/log.bash
|
|
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
|
|
done
|
|
|
|
# Load vendors
|
|
BASH_IT_LOG_PREFIX="vendor: "
|
|
for _bash_it_vendor_init in "${BASH_IT}"/vendor/init.d/*.bash; do
|
|
_log_debug "Loading \"$(basename "${_bash_it_vendor_init}" .bash)\"..."
|
|
# shellcheck disable=SC1090
|
|
source "${_bash_it_vendor_init}"
|
|
done
|
|
unset _bash_it_vendor_init
|
|
|
|
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"
|
|
done
|
|
|
|
# Load theme, if a theme was set
|
|
if [[ -n "${BASH_IT_THEME}" ]]; then
|
|
_log_debug "Loading \"${BASH_IT_THEME}\" theme..."
|
|
# Load colors and helpers first so they can be used in base theme
|
|
BASH_IT_LOG_PREFIX="themes: colors: "
|
|
# shellcheck source=./themes/colors.theme.bash
|
|
source "${BASH_IT}/themes/colors.theme.bash"
|
|
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
|
|
source "$APPEARANCE_LIB"
|
|
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: "
|
|
_log_debug "Loading component..."
|
|
# shellcheck disable=SC1090
|
|
source "${BASH_IT}/${file_type}/custom.${file_type}.bash"
|
|
fi
|
|
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: "
|
|
_log_debug "Loading custom file..."
|
|
# shellcheck disable=SC1090
|
|
source "$_bash_it_config_file"
|
|
fi
|
|
done
|
|
|
|
unset _bash_it_config_file
|
|
if [[ -n "${PROMPT:-}" ]]; then
|
|
export PS1="\[""$PROMPT""\]"
|
|
fi
|
|
|
|
# Adding Support for other OSes
|
|
PREVIEW="less"
|
|
|
|
if [ -s /usr/bin/gloobus-preview ]; then
|
|
PREVIEW="gloobus-preview"
|
|
elif [ -s /Applications/Preview.app ]; then
|
|
# shellcheck disable=SC2034
|
|
PREVIEW="/Applications/Preview.app"
|
|
fi
|
|
|
|
# Load all the Jekyll stuff
|
|
|
|
if [ -e "$HOME/.jekyllconfig" ]; then
|
|
# shellcheck disable=SC1090
|
|
. "$HOME/.jekyllconfig"
|
|
fi
|
|
|
|
# BASH_IT_RELOAD_LEGACY is set.
|
|
if ! command -v reload &> /dev/null && [ -n "${BASH_IT_RELOAD_LEGACY:-}" ]; then
|
|
case $OSTYPE in
|
|
darwin*)
|
|
alias reload='source ~/.bash_profile'
|
|
;;
|
|
*)
|
|
alias reload='source ~/.bashrc'
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
# Disable trap DEBUG on subshells - https://github.com/Bash-it/bash-it/pull/1040
|
|
set +T
|