#!/bin/bash # ==== Homebrew Apple M1/Intel fixing of $PATH if [ -d /opt/homebrew ]; then eval "$(/opt/homebrew/bin/brew shellenv)" elif [ -d /usr/local/Homebrew ]; then eval "$(/usr/local/Homebrew/bin/brew shellenv)" fi export CLICOLOR=1 export LSCOLORS=gxfxcxdxbxegedabagacad # Mac OS custorm colors (not LS_COLORS as unix) defaultscheme "exfxcxdxbxegedabagacad" export LS_COLORS="$LS_COLORS:di=00;36:ln=00;35:ex=00;31" # Unix/Bash Readline custom colors export IGNOREEOF=42 # Ignore Ctrl+D logout terminal session export HISTSIZE=1000 # Num commands to remmember in a terminal session export HISTFILESIZE=10000 # Max number of linse in history file export HISTFILE="$HOME/.bash_history" export HISTCONTROL=ignoredups:erasedups export EDITOR='vim' export TERM="xterm-256color" export GREP_OPTIONS="--color=auto" export PS1="[a14m] \W \$ " export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8 GPG_TTY=$(tty) export GPG_TTY unset SSH_AGENT_PID SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket) export SSH_AUTH_SOCK export BASH_SILENCE_DEPRECATION_WARNING=1 # Silence new macOS warning about bash export USE_GKE_GCLOUD_AUTH_PLUGIN=True # ==== Shell Opts shopt -s checkwinsize # check the window size after each command and, if necessary, update LINES/COLUMNS # ==== Aliases alias la='ls -a' alias dirs="dirs -v" alias srv="python3 -m http.server" # start simple server alias tagme='ctags -R --languages=ruby --exclude=.git --exclude=log . $(bundle list --paths)' alias gpgkill='( pkill pinentry-tty pkill pinentry-curses gpg-connect-agent killagent /bye gpg-connect-agent updatestartuptty /bye gpg-connect-agent /bye )' alias cgit='docker run --name cgit -v $(pwd):/srv -p 1313:80 --rm -it cgit' # ==== Functions # get app ID to add to amethyst (example appid /Applications/Spotify.app/) appid() { codesign -dr - "$@" } homebrew_token() { HOMEBREW_GITHUB_API_TOKEN=$(pass personal/github | grep homebrew_token | awk '{ print $NF}') export HOMEBREW_GITHUB_API_TOKEN } # ==== Aliased Directories alias rc="cd ~/.rc" alias spc="cd ~/Work/Space/" alias mb="cd ~/Work/MBition/" alias obs="cd ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/Vault/MBition/" if command -v neomutt 1>/dev/null 2>&1; then # Fixes the pinentry-tty error https://github.com/neomutt/neomutt/issues/1014 mutt() { PINENTRY_USER_DATA=curses neomutt "$@" } fi # ==== go config. if command -v go 1>/dev/null 2>&1; then export PATH="$HOME/go/bin:$PATH" fi # ==== rbenv config. if command -v rbenv 1>/dev/null 2>&1; then export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)" fi # ==== NVM config # shellcheck source=/dev/null if [ -f "$HOME/.nvm/nvm.sh" ]; then export NVM_DIR=~/.nvm source "$HOME/.nvm/nvm.sh" fi # ==== Vault completeion if command -v vault 1>/dev/null 2>&1; then complete -C "$(brew --prefix)/bin/vault" vault fi # ==== Generate helm autocomplete stuff when it's not there if command -v helm 1>/dev/null 2>&1; then if [ ! -f "$(brew --prefix)/etc/bash_completion.d/helm" ]; then helm completion bash > "$(brew --prefix)/etc/bash_completion.d/helm" fi fi # ==== Generate podman completion script when it's not there if command -v podman 1>/dev/null 2>&1; then if [ ! -f "$(brew --prefix)/etc/bash_completion.d/podman" ]; then podman completion bash > "$(brew --prefix)/etc/bash_completion.d/podman" fi fi # ==== k8s/ktx/kns completeion if command -v kubectl 1>/dev/null 2>&1; then alias k='kubectl' complete -F __start_kubectl k alias ktx='kubectx' complete -F _kube_contexts ktx alias kns='kubens' complete -F _kube_namespaces kns fi # ==== zoxide (smarter cd command) if command -v zoxide 1>/dev/null 2>&1; then eval "$(zoxide init bash --cmd cd)" fi # ==== load all bash completions if [ -f "$(brew --prefix)/etc/bash_completion" ]; then . "$(brew --prefix)/etc/bash_completion" fi # ==== MISC CowSay # fortune | cowsay | lolcat # ==== Work config =========================================================== # ==== JAVA config if command -v java 1>/dev/null 2>&1; then export PATH="$(brew --prefix)/opt/openjdk@11/bin:$PATH" export PATH="$(brew --prefix)/opt/gradle@6/bin:$PATH" fi # ==== JFrog CLI config if command -v jf 1>/dev/null 2>&1; then _jfrog() { local cur opts COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" opts=$( "${COMP_WORDS[@]:0:$COMP_CWORD}" --generate-bash-completion ) mapfile -t COMPREPLY < <(compgen -W "${opts}" -- "${cur}") } complete -F _jfrog -o default jfrog complete -F _jfrog -o default jf fi # ==== CLang and Sphinx doc config if command -v clang-format 1>/dev/null 2>&1; then export PATH="$(brew --prefix)/opt/sphinx-doc/bin:$PATH" fi alias assume=". assume" gitlab_token() { GITLAB_TOKEN=$(pass mbition/git | grep token | awk '{ print $NF}') export GITLAB_TOKEN } gitlab_su_token() { GITLAB_TOKEN=$(pass mbition/git | grep su_token | awk '{ print $NF}') export GITLAB_TOKEN } gitlab_baas_token() { GITLAB_TOKEN=$(pass mbition/git | grep baas_token | awk '{ print $NF}') export GITLAB_TOKEN }