aboutsummaryrefslogtreecommitdiff
path: root/.bashrc
blob: c2dd0737650fdad5cb9e4be35e3cd1edc512cbbf (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 $@
}