feat: Améliore la gestion pour sourcer le contenu des sous-répertoires (*.d)
This commit is contained in:
parent
08916f80b6
commit
17da072e1d
44
_helpers.bash
Normal file
44
_helpers.bash
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
function basedir() {
|
||||||
|
(cd "$(dirname \"$-2\")" && pwd)
|
||||||
|
}
|
||||||
|
|
||||||
|
function _source_file_if_exists() {
|
||||||
|
if [ -r "$1" ]; then
|
||||||
|
test -n "$DEBUG_BASHRC" && echo "-- Sourcing file $1"
|
||||||
|
source "$1"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function _source_dir_files() {
|
||||||
|
if [ -d "$1" ]; then
|
||||||
|
test -n "$DEBUG_BASHRC" && echo "-- Sourcing files in directory $1"
|
||||||
|
|
||||||
|
# Safe loops for empty dirs
|
||||||
|
shopt -s nullglob
|
||||||
|
|
||||||
|
for file in "$1"/*; do
|
||||||
|
if [ -e "$file" ]; then
|
||||||
|
test -n "$DEBUG_BASHRC" && echo " * sourcing file $file"
|
||||||
|
source "$file"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Restore option nullglob to normal
|
||||||
|
shopt -u nullglob
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Source : https://superuser.com/questions/39751/add-directory-to-path-if-its-not-already-there
|
||||||
|
_path_add() {
|
||||||
|
if [ -d "$1" ] && [[ ":$PATH:" != *":$1:"* ]]; then
|
||||||
|
PATH="${PATH:+"$PATH:"}$1"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
_prompt_command_add() {
|
||||||
|
if [ -n "$1" ] && [[ ":$PROMPT_COMMAND:" != *":$1:"* ]]; then
|
||||||
|
PROMPT_COMMAND="${PROMPT_COMMAND:+"$PROMPT_COMMAND;"}$1"
|
||||||
|
fi
|
||||||
|
}
|
68
bashrc
68
bashrc
@ -11,37 +11,65 @@ if [[ $- != *i* ]]; then
|
|||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Safe loops for empty dirs
|
# DEBUG_BASHRC=true
|
||||||
shopt -s nullglob
|
|
||||||
|
# Determine path to directory of this file (FIX: remove dependency to readlink for posix compliance)
|
||||||
|
BASEDIR=$(
|
||||||
|
source_file=$(readlink -f "${BASH_SOURCE[0]}")
|
||||||
|
source_dir=$(dirname "${source_file}")
|
||||||
|
cd "${source_dir}" && pwd
|
||||||
|
)
|
||||||
|
|
||||||
|
# Source some helpers functions
|
||||||
|
source "${BASEDIR}/_helpers.bash"
|
||||||
|
|
||||||
# Source custom libs
|
# Source custom libs
|
||||||
if [ -d "$HOME"/.bash/libs ]; then for lib in "$HOME"/.bash/libs/*.bash; do source "$lib"; done; fi
|
_source_dir_files "${BASEDIR}"/libs
|
||||||
|
# if [ -d "$HOME"/.bash/libs ]; then for lib in "$HOME"/.bash/libs/*.bash; do source "$lib"; done; fi
|
||||||
|
|
||||||
|
# Source 3rd party libs if they exists
|
||||||
|
_source_file_if_exists "${BASEDIR}/3rd-party/complete-alias/complete_alias"
|
||||||
|
# _source_file_if_exists "${BASEDIR}/3rd-party/z/z.sh" # FIX: Problème de gestion de la variable PROMPT_COMMAND
|
||||||
|
|
||||||
# Early customization
|
# Early customization
|
||||||
if [ -d "$HOME"/.bash/rc.before.d ]; then for file in "$HOME"/.bash/rc.before.d/*; do source "$file"; done; fi
|
_source_dir_files "${BASEDIR}"/rc.before.d
|
||||||
|
# if [ -d "$HOME"/.bash/rc.before.d ]; then for file in "$HOME"/.bash/rc.before.d/*; do source "$file"; done; fi
|
||||||
|
|
||||||
# Source rc.d/*
|
# Source rc.d/*
|
||||||
if [ -d "$HOME"/.bash/rc.d ]; then for file in "$HOME"/.bash/rc.d/*; do source "$file"; done; fi
|
_source_dir_files "${BASEDIR}"/rc
|
||||||
|
_source_dir_files "${BASEDIR}"/rc.d
|
||||||
|
# if [ -d "$HOME"/.bash/rc.d ]; then for file in "$HOME"/.bash/rc.d/*; do source "$file"; done; fi
|
||||||
|
|
||||||
# Source alias definitions
|
# Source alias definitions
|
||||||
if [ -f "$HOME"/.bash_aliases ]; then source "$HOME"/.bash_aliases; fi
|
_source_file_if_exists ~/.bash_aliases
|
||||||
if [ -f "$HOME"/.bash/aliases ]; then source "$HOME"/.bash/aliases; fi
|
_source_file_if_exists "${BASEDIR}"/aliases
|
||||||
if [ -d "$HOME"/.bash/aliases ]; then for file in "$HOME"/.bash/aliases/*; do source "$file"; done; fi
|
# if [ -f "$HOME"/.bash_aliases ]; then source "$HOME"/.bash_aliases; fi
|
||||||
if [ -d "$HOME"/.bash/aliases.d ]; then for file in "$HOME"/.bash/aliases.d/*; do source "$file"; done; fi
|
# if [ -f "$HOME"/.bash/aliases ]; then source "$HOME"/.bash/aliases; fi
|
||||||
|
_source_dir_files "${BASEDIR}"/aliases
|
||||||
|
_source_dir_files "${BASEDIR}"/aliases.d
|
||||||
|
# if [ -d "$HOME"/.bash/aliases ]; then for file in "$HOME"/.bash/aliases/*; do source "$file"; done; fi
|
||||||
|
# if [ -d "$HOME"/.bash/aliases.d ]; then for file in "$HOME"/.bash/aliases.d/*; do source "$file"; done; fi
|
||||||
|
|
||||||
|
# Source bash completion definitions
|
||||||
|
# TODO: Améliorer cette partie pour éviter les erreurs quand aucun fichier n'existe
|
||||||
|
for file in /etc/bash*completion /etc/profile.d/bash*completion*; do source "$file"; done
|
||||||
|
|
||||||
|
_source_file_if_exists ~/.bash_completion
|
||||||
|
_source_file_if_exists "${BASEDIR}"/completion
|
||||||
|
# if [ -f "$HOME"/.bash_completion ]; then source "$HOME"/.bash_completion; fi
|
||||||
|
# if [ -f "$HOME"/.bash/completion ]; then source "$HOME"/.bash/completion; fi
|
||||||
|
_source_dir_files "${BASEDIR}"/completion
|
||||||
|
_source_dir_files "${BASEDIR}"/completion.d
|
||||||
|
# if [ -d "$HOME"/.bash/completion ]; then for file in "$HOME"/.bash/completion/*; do source "$file"; done; fi
|
||||||
|
# if [ -d "$HOME"/.bash/completion.d ]; then for file in "$HOME"/.bash/completion.d/*; do source "$file"; done; fi
|
||||||
|
_source_dir_files ~/.nix-profile/share/bash-completion/completions
|
||||||
|
|
||||||
if (command -v _complete_alias &>/dev/null); then
|
if (command -v _complete_alias &>/dev/null); then
|
||||||
for alias in $(alias -p | awk '{print $2}' | awk -F= '{print $1}'); do complete -o default -F _complete_alias "$alias"; done
|
for alias in $(alias -p | awk '{print $2}' | awk -F= '{print $1}'); do complete -o default -F _complete_alias "$alias"; done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Source bash completion definitions
|
|
||||||
for file in /etc/bash*completion /etc/profile.d/bash*completion*; do source "$file"; done
|
|
||||||
|
|
||||||
if [ -f "$HOME"/.bash_completion ]; then source "$HOME"/.bash_completion; fi
|
|
||||||
if [ -f "$HOME"/.bash/completion ]; then source "$HOME"/.bash/completion; fi
|
|
||||||
if [ -d "$HOME"/.bash/completion ]; then for file in "$HOME"/.bash/completion/*; do source "$file"; done; fi
|
|
||||||
if [ -d "$HOME"/.bash/completion.d ]; then for file in "$HOME"/.bash/completion.d/*; do source "$file"; done; fi
|
|
||||||
|
|
||||||
# Late customization
|
# Late customization
|
||||||
if [ -d "$HOME"/.bash/rc.after.d ]; then for file in "$HOME"/.bash/rc.after.d/*; do source "$file"; done; fi
|
_source_dir_files "${BASEDIR}"/rc.after.d
|
||||||
|
# if [ -d "$HOME"/.bash/rc.after.d ]; then for file in "$HOME"/.bash/rc.after.d/*; do source "$file"; done; fi
|
||||||
|
|
||||||
# Restore option nullglob to normal
|
complete -C /home/ZOE/u86pw03/.local/share/mise/installs/vault/1.18.2/bin/vault vault
|
||||||
shopt -u nullglob
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user