oh-my-bash/oh-my-bash.sh
Kreyren 429ffc1cbc oh-my-bash.sh : Fix for #70 #59 (#71)
* oh-my-bash.sh : Fix for #70

* Future proofing

* Fixed symlink for agnoster-bash.theme.sh

* Reaction on https://github.com/ohmybash/oh-my-bash/pull/71#discussion_r307617303
2019-07-31 16:13:08 +07:00

164 lines
4.7 KiB
Bash

#!/usr/bin/env bash
# Bail out early if non-interactive
case $- in
*i*) ;;
*) return;;
esac
# Check for updates on initial load...
if [ "$DISABLE_AUTO_UPDATE" != "true" ]; then
env OSH=$OSH DISABLE_UPDATE_PROMPT=$DISABLE_UPDATE_PROMPT bash -f $OSH/tools/check_for_upgrade.sh
fi
# Initializes Oh My Bash
# add a function path
fpath=($OSH/functions $fpath)
# Set OSH_CUSTOM to the path where your custom config files
# and plugins exists, or else we will use the default custom/
if [[ -z "$OSH_CUSTOM" ]]; then
OSH_CUSTOM="$OSH/custom"
fi
# Set OSH_CACHE_DIR to the path where cache files should be created
# or else we will use the default cache/
if [[ -z "$OSH_CACHE_DIR" ]]; then
OSH_CACHE_DIR="$OSH/cache"
fi
# Load all of the config files in ~/.oh-my-bash/lib that end in .sh
# TIP: Add files you don't want in git to .gitignore
for config_file in $OSH/lib/*.sh; do
custom_config_file="${OSH_CUSTOM}/lib/${config_file:t}"
[ -f "${custom_config_file}" ] && config_file=${custom_config_file}
source $config_file
done
is_plugin() {
local base_dir=$1
local name=$2
test -f $base_dir/plugins/$name/$name.plugin.sh \
|| test -f $base_dir/plugins/$name/_$name
}
# Add all defined plugins to fpath. This must be done
# before running compinit.
for plugin in ${plugins[@]}; do
if is_plugin $OSH_CUSTOM $plugin; then
fpath=($OSH_CUSTOM/plugins/$plugin $fpath)
elif is_plugin $OSH $plugin; then
fpath=($OSH/plugins/$plugin $fpath)
fi
done
is_completion() {
local base_dir=$1
local name=$2
test -f $base_dir/completions/$name/$name.completion.sh
}
# Add all defined completions to fpath. This must be done
# before running compinit.
for completion in ${completions[@]}; do
if is_completion $OSH_CUSTOM $completion; then
fpath=($OSH_CUSTOM/completions/$completion $fpath)
elif is_completion $OSH $completion; then
fpath=($OSH/completions/$completion $fpath)
fi
done
is_alias() {
local base_dir=$1
local name=$2
test -f $base_dir/aliases/$name/$name.aliases.sh
}
# Add all defined completions to fpath. This must be done
# before running compinit.
for alias in ${aliases[@]}; do
if is_alias $OSH_CUSTOM $alias; then
fpath=($OSH_CUSTOM/aliases/$alias $fpath)
elif is_alias $OSH $alias; then
fpath=($OSH/aliases/$alias $fpath)
fi
done
# Figure out the SHORT hostname
if [[ "$OSTYPE" = darwin* ]]; then
# macOS's $HOST changes with dhcp, etc. Use ComputerName if possible.
SHORT_HOST=$(scutil --get ComputerName 2>/dev/null) || SHORT_HOST=${HOST/.*/}
else
SHORT_HOST=${HOST/.*/}
fi
# Load all of the plugins that were defined in ~/.bashrc
for plugin in ${plugins[@]}; do
if [ -f $OSH_CUSTOM/plugins/$plugin/$plugin.plugin.sh ]; then
source $OSH_CUSTOM/plugins/$plugin/$plugin.plugin.sh
elif [ -f $OSH/plugins/$plugin/$plugin.plugin.sh ]; then
source $OSH/plugins/$plugin/$plugin.plugin.sh
fi
done
# Load all of the aliases that were defined in ~/.bashrc
for alias in ${aliases[@]}; do
if [ -f $OSH_CUSTOM/aliases/$alias.aliases.sh ]; then
source $OSH_CUSTOM/aliases/$alias.aliases.sh
elif [ -f $OSH/aliases/$alias.aliases.sh ]; then
source $OSH/aliases/$alias.aliases.sh
fi
done
# Load all of the completions that were defined in ~/.bashrc
for completion in ${completions[@]}; do
if [ -f $OSH_CUSTOM/completions/$completion.completion.sh ]; then
source $OSH_CUSTOM/completions/$completion.completion.sh
elif [ -f $OSH/completions/$completion.completion.sh ]; then
source $OSH/completions/$completion.completion.sh
fi
done
# Load all of your custom configurations from custom/
for config_file in $OSH_CUSTOM/*.sh; do
if [ -f $config_file ]; then
source $config_file
fi
done
unset config_file
# Load colors first so they can be use in base theme
source "${OSH}/themes/colours.theme.sh"
source "${OSH}/themes/base.theme.sh"
# Load the theme
if [ "$OSH_THEME" = "random" ]; then
themes=($OSH/themes/*/*theme.sh)
N=${#themes[@]}
((N=(RANDOM%N)))
RANDOM_THEME=${themes[$N]}
source "$RANDOM_THEME"
echo "[oh-my-bash] Random theme '$RANDOM_THEME' loaded..."
else
if [ ! "$OSH_THEME" = "" ]; then
if [ -f "$OSH_CUSTOM/$OSH_THEME/$OSH_THEME.theme.sh" ]; then
source "$OSH_CUSTOM/$OSH_THEME/$OSH_THEME.theme.sh"
elif [ -f "$OSH_CUSTOM/themes/$OSH_THEME/$OSH_THEME.theme.sh" ]; then
source "$OSH_CUSTOM/themes/$OSH_THEME/$OSH_THEME.theme.sh"
else
source "$OSH/themes/$OSH_THEME/$OSH_THEME.theme.sh"
fi
fi
fi
if [[ $PROMPT ]]; then
export PS1="\["$PROMPT"\]"
fi
if ! type_exists '__git_ps1' ; then
source "$OSH/tools/git-prompt.sh"
fi
# Adding Support for other OSes
[ -s /usr/bin/gloobus-preview ] && PREVIEW="gloobus-preview" ||
[ -s /Applications/Preview.app ] && PREVIEW="/Applications/Preview.app" || PREVIEW="less"