punktdateien/bash/bashrc.d/startup.sh

64 lines
1.9 KiB
Bash
Executable file

#!/usr/bin/env bash
# shellcheck disable=SC2154
cd "${HOME:?}/.bashrc.d" || (
echo ":: Can't cd into ${HOME:?}/.bashrc.d"
exit 1
)
# Initialize basic stuff
[[ -f "init.d/path.sh" ]] && source "init.d/path.sh"
[[ -f "init.d/variables.sh" ]] && source "init.d/variables.sh"
[[ -f "init.d/aliases.sh" ]] && source "init.d/aliases.sh"
[[ -f "init.d/functions.sh" ]] && source "init.d/functions.sh"
# Create new configuration file
[[ ! -f "config.sh" ]] && $(which cat) << EOF >> config.sh
#!/usr/bin/env bash
CONFIG_FLOW_CONTROL=0
CONFIG_AUTOSAVE_HISTORY=1
CONFIG_CUSTOM_PROMPT=1
CONFIG_EDITOR=nano
CONFIG_REPLACE_PKGMGR_ORIGINAL=pacman
CONFIG_REPLACE_PKGMGR_REPLACEMENT=paru
EOF
# Load configuration file
source "config.sh"
# Process configuration changes
# -> Flow control
[[ "${CONFIG_FLOW_CONTROl}" == "0" ]] && stty -ixon
[[ "${CONFIG_FLOW_CONTROL}" == "1" ]] && stty ixon
# -> Autosave history
[[ "${CONFIG_AUTOSAVE_HISTORY}" == "1" ]] && export "PROMPT_COMMAND=history -a"
# -> Custom prompt
if [[ "${CONFIG_CUSTOM_PROMPT}" == "1" ]]; then
export "PS1=\[\033[38;5;33m\][\[$(tput sgr0)\]\[\033[38;5;38m\]\u\[$(tput sgr0)\]\[\033[38;5;33m\]@\[$(tput sgr0)\]\[\033[38;5;38m\]\H\[$(tput sgr0)\]\[\033[38;5;33m\]:\[$(tput sgr0)\]\[\033[38;5;38m\]\W\[$(tput sgr0)\] \[$(tput sgr0)\]\[\033[38;5;214m\]\$?\[$(tput sgr0)\]\[\033[38;5;33m\]]\\$\[$(tput sgr0)\] "
export "PS2=\[\033[38;5;196m\][incomplete]: \033[0;10m"
export "PS4=\${0}:\${LINENO}+ "
fi
# -> Editor
export "EDITOR=${CONFIG_EDITOR}"
# -> Package manager replacement
if [ -n "${CONFIG_REPLACE_PKGMGR_ORIGINAL}" ] && [ -n "${CONFIG_REPLACE_PKGMGR_REPLACEMENT}" ]; then
# shellcheck disable=SC2139
alias "${CONFIG_REPLACE_PKGMGR_ORIGINAL}=${CONFIG_REPLACE_PKGMGR_REPLACEMENT}"
fi
# Initialize shell programs
for file in programs.d/*; do
# shellcheck disable=SC1090
source "${file}"
done
# Run startup scripts
for file in startup.d/*; do
# shellcheck disable=SC1090
source "${file}"
done