blob: bc9b6af518de7a4c2e3d3466af83f5047e261e59 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
#!/bin/bash
# quit if not running interactively
[[ $- != *i* ]] && return
# --- LOCAL UTILITY FUNCTIONS
_have() { type "$1" &>/dev/null; }
_source_if() { [[ -r "$1" ]] && source "$1"; }
# --- ENVIRONMENT
export CLICOLOR=1
export EDITOR=vi
export GIT_EDITOR=vi
export VISUAL=vi
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8
export TERM="xterm-256color"
export FZF_DEFAULT_COMMAND='ag --hidden -g ""'
export GOPROXY=direct
export GOPATH="$HOME/.local/go"
export FUNCTIONS_CORE_TOOLS_TELEMETRY_OUTPUT=1
# --- PATHS
export PATH="$HOME/.local/go/bin:$PATH"
export PATH="$HOME/.local/bin:$PATH"
export PATH="$HOME/.local/scripts:$PATH"
export PATH="$HOME/bin:$PATH"
export PATH="/usr/local/sbin:$PATH"
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_DATA_HOME="$HOME/.local/share"
# --- BASH SHELL OPTIONS
shopt -s histappend
shopt -s checkwinsize
# --- HISTORY
export HISTSIZE=10000
export HISTFILESIZE=10000
export HISTCONTROL=ignoreboth
# --- PROMPT
__virtual_env_info() {
[ $VIRTUAL_ENV ] && echo "${VIRTUAL_ENV+(${VIRTUAL_ENV##*/})}"
}
__ps1() {
local branch_color="\e[1;35m"
local branch_prompt
local branch_prompt_clr
local git_branch=$(git branch --show-current 2>/dev/null)
local sign_prompt='\$'
local sign_prompt_clr='\e[00m\$'
[[ $git_branch == master || $git_branch == main ]] && branch_color="\e[31m"
[[ -n "$git_branch" ]] && branch_prompt_clr="$branch_color($git_branch)"
[[ -n "$git_branch" ]] && branch_prompt="($git_branch)"
[[ $EUID == 0 ]] && sign_prompt='#'
[[ $EUID == 0 ]] && sign_prompt_clr='\e[31m#\e[00m'
case "$TERM" in
xterm-color|*-256color)
PS1="\e[0;33m$(__virtual_env_info)\e[01;32m\u@\h\e[00m:\e[01;34m\W $branch_prompt_clr$sign_prompt_clr ";;
*)
PS1="$(__virtual_env_info)\u@\h:\W $branch_prompt$sign_prompt ";;
esac
}
if [ -x "$(command -v oh-my-posh)" ]; then
eval "$(oh-my-posh init bash --config $XDG_CONFIG_HOME/oh-my-posh/config.yml)"
else
PROMPT_COMMAND="__ps1"
fi
# --- ALIASES
alias rm='rm -i'
alias mv='mv -i'
alias cp='cp -i'
alias ls="ls -h --color=auto"
alias ll="ls -laH --color=auto"
alias gcm="git commit -m"
alias gsa="git status -uall"
alias gap="git add -p"
alias gpf="git pull && git fetch --prune"
alias gitl="git log -n 5 --graph --decorate --oneline"
alias tree="tree -a -I 'node_modules|.git'"
_have vim && alias vi=vim && EDITOR=vim && GIT_EDITOR=vim
# _have nvim && alias vi=nvim && EDITOR=nvim && GIT_EDITOR=nvim
# --- KEYBINDINGS
bind -x '"\C-f": tmux-sessionizer'
# --- COMPLETIONS
_source_if "/etc/bash_completion"
_source_if "$HOME/.fzf.bash"
_source_if "$HOME/.git-completion.bash"
# --- PERSONALIZED CONFIGURATIONS
_source_if "$HOME/.bash_personal"
_source_if "$HOME/.bash_work"
# --- LAZY LOAD NVM (node version manager)
lazy_load_nvm() {
unset -f npm node nvm
export NVM_DIR="$HOME/.nvm"
_source_if "$NVM_DIR/nvm.sh"
_source_if "$NVM_DIR/bash_completion"
}
npm() {
lazy_load_nvm
npm $@
}
node() {
lazy_load_nvm
node $@
}
nvm() {
lazy_load_nvm
node $@
}
|