From f54eafd4a7e36a3fbe09ad376e362981e5ffcdb2 Mon Sep 17 00:00:00 2001 From: Jacob Bohanon Date: Mon, 18 Jul 2022 14:48:35 -0400 Subject: [PATCH] gitignore --- .gitignore | 1 + zsh/.zshrc | 517 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 518 insertions(+) create mode 100644 .gitignore create mode 100644 zsh/.zshrc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9973a57 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +ignore/ diff --git a/zsh/.zshrc b/zsh/.zshrc new file mode 100644 index 0000000..89cf93b --- /dev/null +++ b/zsh/.zshrc @@ -0,0 +1,517 @@ +alias ctags="`brew --prefix`/bin/ctags" +export EDITOR=nvim +# If you come from bash you might have to change your $PATH. +export PATH=$HOME/bin:$HOME/.local/bin:/usr/local/bin:/opt/local/bin:${GOPATH}/bin:$PATH + +# Path to your oh-my-zsh installation. +export ZSH=/Users/jacobbohanon/.oh-my-zsh + +# GO stuff +export GOPATH="${HOME}/go" +#export GOROOT="$(brew --prefix golang)/libexec" +export GOROOT="/usr/local/go" + +# eksctl +fpath=($fpath ~/.zsh/completion) +export PATH=${GOPATH}/bin:${GOROOT}/bin:$PATH + +# License keys for enterprise installations +SECRET_PATH="${SECRET_PATH:-$HOME/.dotfiles/ignore/secrets}" +if [[ -f $SECRET_PATH ]]; then + while read -r secret + do + eval $secret + done < $SECRET_PATH +else + echo "could not find secrets file at $SECRET_PATH" + echo "expected file containing secrets export statements" + echo "" + echo "see https://github.com/settings/tokens for creating a github access token" + echo "export GITHUB_TOKEN=" + echo "" + echo "see https://github.com/solo-io/licensing for generating licenses" + echo "export GLOO_LICENSE_KEY=" + echo "export GLOO_MESH_LICENSE_KEY=" +fi + +# Aliases to reach different repos +alias pls='sudo' +alias cdsi='cd $GOPATH/src/github.com/solo-io' +alias cdg='cd $GOPATH/src/github.com/solo-io/gloo' +alias nvg='nvim $GOPATH/src/github.com/solo-io/gloo/README.md' +alias cdgf='cd $GOPATH/src/github.com/solo-io/gloo-fed' +alias nvgf='nvim $GOPATH/src/github.com/solo-io/gloo-fed/README.md' +alias cdsp='cd $GOPATH/src/github.com/solo-io/solo-projects' +alias nvsp='nvim $GOPATH/src/github.com/solo-io/solo-projects/README.md' +alias cdgm='cd $GOPATH/src/github.com/solo-io/gloo-mesh' +alias nvgm='nvim $GOPATH/src/github.com/solo-io/gloo-mesh/README.md' +alias cdgmui='cd $GOPATH/src/github.com/solo-io/gloo-mesh-ui' +alias nvgmui='nvim $GOPATH/src/github.com/solo-io/gloo-mesh-ui/README.md' +alias cdgme='cd $GOPATH/src/github.com/solo-io/gloo-mesh-enterprise' +alias nvgme='nvim $GOPATH/src/github.com/solo-io/gloo-mesh-enterprise/README.md' +alias cdea='cd $GOPATH/src/github.com/solo-io/ext-auth-service' +alias nvea='nvim $GOPATH/src/github.com/solo-io/ext-auth-service/README.md' +alias cdrl='cd $GOPATH/src/github.com/solo-io/rate-limiter' +alias nvrl='nvim $GOPATH/src/github.com/solo-io/rate-limiter/README.md' + +alias cddf='cd $HOME/.dotfiles' +alias nvdf='nvim $HOME/.dotfiles/README.md' + +# go mod needs this +export GOPRIVATE="github.com/solo-io" + +# Set name of the theme to load. Optionally, if you set this to "random" +# it'll load a random theme each time that oh-my-zsh is loaded. +# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes +ZSH_THEME="robbyrussell" +# fzf stuff +_fzf_compgen_path() { + fd --hidden --follow --exclude ".git" . "$1" +} +# Use fd to generate the list for directory completion +_fzf_compgen_dir() { + fd --type d --hidden --follow --exclude ".git" . "$1" +} +# Set list of themes to load +# Setting this variable when ZSH_THEME=random +# cause zsh load theme from this variable instead of +# looking in ~/.oh-my-zsh/themes/ +# An empty array have no effect +# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) +# Uncomment the following line to use case-sensitive completion. +# CASE_SENSITIVE="true" +# Uncomment the following line to use hyphen-insensitive completion. Case +# sensitive completion must be off. _ and - will be interchangeable. +# HYPHEN_INSENSITIVE="true" +# Uncomment the following line to disable bi-weekly auto-update checks. +DISABLE_AUTO_UPDATE="true" +# Uncomment the following line to change how often to auto-update (in days). +export UPDATE_ZSH_DAYS=13 +# Uncomment the following line to disable colors in ls. +# DISABLE_LS_COLORS="true" +# Uncomment the following line to disable auto-setting terminal title. +# DISABLE_AUTO_TITLE="true" +# Uncomment the following line to enable command auto-correction. +# ENABLE_CORRECTION="true" +# Uncomment the following line to display red dots whilst waiting for completion. +# COMPLETION_WAITING_DOTS="true" +# Uncomment the following line if you want to disable marking untracked files +# under VCS as dirty. This makes repository status check for large repositories +# much, much faster. +DISABLE_UNTRACKED_FILES_DIRTY="true" +# Uncomment the following line if you want to change the command execution time +# stamp shown in the history command output. +# The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" +# HIST_STAMPS="mm/dd/yyyy" +# Would you like to use another custom folder than $ZSH/custom? +# ZSH_CUSTOM=/path/to/new-custom-folder +# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*) +# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ +# Example format: plugins=(rails git textmate ruby lighthouse) +# Add wisely, as too many plugins slow down shell startup. +plugins=( + git + fzf + zsh-autosuggestions + zsh-syntax-highlighting + kubectl +) +source $ZSH/oh-my-zsh.sh +# User configuration +# export MANPATH="/usr/local/man:$MANPATH" +# You may need to manually set your language environment +# export LANG=en_US.UTF-8 +# Preferred editor for local and remote sessions +# if [[ -n $SSH_CONNECTION ]]; then +# export EDITOR='vim' +# else +# export EDITOR='mvim' +# fi +# Compilation flags +# export ARCHFLAGS="-arch x86_64" +# ssh +export SSH_KEY_PATH="~/.ssh/rsa_id" + +# Set personal aliases, overriding those provided by oh-my-zsh libs, +# plugins, and themes. Aliases can be placed here, though oh-my-zsh +# users are encouraged to define aliases within the ZSH_CUSTOM folder. +# For a full list of active aliases, run `alias`. +[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh +eval "$(starship init zsh)" + + +alias cls='clear' +export PATH="/opt/homebrew/opt/protobuf@3.6/bin:$PATH" +#compdef _helm helm + +# zsh completion for helm -*- shell-script -*- + +__helm_debug() +{ + local file="$BASH_COMP_DEBUG_FILE" + if [[ -n ${file} ]]; then + echo "$*" >> "${file}" + fi +} + +_helm() +{ + local shellCompDirectiveError=1 + local shellCompDirectiveNoSpace=2 + local shellCompDirectiveNoFileComp=4 + local shellCompDirectiveFilterFileExt=8 + local shellCompDirectiveFilterDirs=16 + + local lastParam lastChar flagPrefix requestComp out directive comp lastComp noSpace + local -a completions + + __helm_debug "\n========= starting completion logic ==========" + __helm_debug "CURRENT: ${CURRENT}, words[*]: ${words[*]}" + + # The user could have moved the cursor backwards on the command-line. + # We need to trigger completion from the $CURRENT location, so we need + # to truncate the command-line ($words) up to the $CURRENT location. + # (We cannot use $CURSOR as its value does not work when a command is an alias.) + words=("${=words[1,CURRENT]}") + __helm_debug "Truncated words[*]: ${words[*]}," + + lastParam=${words[-1]} + lastChar=${lastParam[-1]} + __helm_debug "lastParam: ${lastParam}, lastChar: ${lastChar}" + + # For zsh, when completing a flag with an = (e.g., helm -n=) + # completions must be prefixed with the flag + setopt local_options BASH_REMATCH + if [[ "${lastParam}" =~ '-.*=' ]]; then + # We are dealing with a flag with an = + flagPrefix="-P ${BASH_REMATCH}" + fi + + # Prepare the command to obtain completions + requestComp="${words[1]} __complete ${words[2,-1]}" + if [ "${lastChar}" = "" ]; then + # If the last parameter is complete (there is a space following it) + # We add an extra empty parameter so we can indicate this to the go completion code. + __helm_debug "Adding extra empty parameter" + requestComp="${requestComp} \"\"" + fi + + __helm_debug "About to call: eval ${requestComp}" + + # Use eval to handle any environment variables and such + out=$(eval ${requestComp} 2>/dev/null) + __helm_debug "completion output: ${out}" + + # Extract the directive integer following a : from the last line + local lastLine + while IFS='\n' read -r line; do + lastLine=${line} + done < <(printf "%s\n" "${out[@]}") + __helm_debug "last line: ${lastLine}" + + if [ "${lastLine[1]}" = : ]; then + directive=${lastLine[2,-1]} + # Remove the directive including the : and the newline + local suffix + (( suffix=${#lastLine}+2)) + out=${out[1,-$suffix]} + else + # There is no directive specified. Leave $out as is. + __helm_debug "No directive found. Setting do default" + directive=0 + fi + + __helm_debug "directive: ${directive}" + __helm_debug "completions: ${out}" + __helm_debug "flagPrefix: ${flagPrefix}" + + if [ $((directive & shellCompDirectiveError)) -ne 0 ]; then + __helm_debug "Completion received error. Ignoring completions." + return + fi + + while IFS='\n' read -r comp; do + if [ -n "$comp" ]; then + # If requested, completions are returned with a description. + # The description is preceded by a TAB character. + # For zsh's _describe, we need to use a : instead of a TAB. + # We first need to escape any : as part of the completion itself. + comp=${comp//:/\\:} + + local tab=$(printf '\t') + comp=${comp//$tab/:} + + __helm_debug "Adding completion: ${comp}" + completions+=${comp} + lastComp=$comp + fi + done < <(printf "%s\n" "${out[@]}") + + if [ $((directive & shellCompDirectiveNoSpace)) -ne 0 ]; then + __helm_debug "Activating nospace." + noSpace="-S ''" + fi + + if [ $((directive & shellCompDirectiveFilterFileExt)) -ne 0 ]; then + # File extension filtering + local filteringCmd + filteringCmd='_files' + for filter in ${completions[@]}; do + if [ ${filter[1]} != '*' ]; then + # zsh requires a glob pattern to do file filtering + filter="\*.$filter" + fi + filteringCmd+=" -g $filter" + done + filteringCmd+=" ${flagPrefix}" + + __helm_debug "File filtering command: $filteringCmd" + _arguments '*:filename:'"$filteringCmd" + elif [ $((directive & shellCompDirectiveFilterDirs)) -ne 0 ]; then + # File completion for directories only + local subdir + subdir="${completions[1]}" + if [ -n "$subdir" ]; then + __helm_debug "Listing directories in $subdir" + pushd "${subdir}" >/dev/null 2>&1 + else + __helm_debug "Listing directories in ." + fi + + local result + _arguments '*:dirname:_files -/'" ${flagPrefix}" + result=$? + if [ -n "$subdir" ]; then + popd >/dev/null 2>&1 + fi + return $result + else + __helm_debug "Calling _describe" + if eval _describe "completions" completions $flagPrefix $noSpace; then + __helm_debug "_describe found some completions" + + # Return the success of having called _describe + return 0 + else + __helm_debug "_describe did not find completions." + __helm_debug "Checking if we should do file completion." + if [ $((directive & shellCompDirectiveNoFileComp)) -ne 0 ]; then + __helm_debug "deactivating file completion" + + # We must return an error code here to let zsh know that there were no + # completions found by _describe; this is what will trigger other + # matching algorithms to attempt to find completions. + # For example zsh can match letters in the middle of words. + return 1 + else + # Perform file completion + __helm_debug "Activating file completion" + + # We must return the result of this command, so it must be the + # last command, or else we must store its result to return it. + _arguments '*:filename:_files'" ${flagPrefix}" + fi + fi + fi +} + +# don't run the completion function when being source-ed or eval-ed +if [ "$funcstack[1]" = "_helm" ]; then + _helm +fi +compdef _helm helm + +export ACK_GINKGO_DEPRECATIONS=1.16.5 + +# The next line updates PATH for the Google Cloud SDK. +if [ -f '/Users/jacobbohanon/google-cloud-sdk/path.zsh.inc' ]; then . '/Users/jacobbohanon/google-cloud-sdk/path.zsh.inc'; fi + +# The next line enables shell command completion for gcloud. +if [ -f '/Users/jacobbohanon/google-cloud-sdk/completion.zsh.inc' ]; then . '/Users/jacobbohanon/google-cloud-sdk/completion.zsh.inc'; fi + +alias startenvoydev="gcloud compute instances start bohanon-envoy-dev --zone us-central1-a --project solo-test-236622 && gcloud compute config-ssh --force-key-file-overwrite --project solo-test-236622" +alias stopenvoydev="gcloud compute instances stop bohanon-envoy-dev --zone us-central1-a --project solo-test-236622" +alias sshenvoydev="gcloud beta compute ssh --zone us-central1-a bohanon-envoy-dev --project solo-test-236622" + + +export NVM_DIR="$HOME/.nvm" +[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm +[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion + +#compdef _kind kind + +# zsh completion for kind -*- shell-script -*- + +__kind_debug() +{ + local file="$BASH_COMP_DEBUG_FILE" + if [[ -n ${file} ]]; then + echo "$*" >> "${file}" + fi +} + +_kind() +{ + local shellCompDirectiveError=1 + local shellCompDirectiveNoSpace=2 + local shellCompDirectiveNoFileComp=4 + local shellCompDirectiveFilterFileExt=8 + local shellCompDirectiveFilterDirs=16 + + local lastParam lastChar flagPrefix requestComp out directive comp lastComp noSpace + local -a completions + + __kind_debug "\n========= starting completion logic ==========" + __kind_debug "CURRENT: ${CURRENT}, words[*]: ${words[*]}" + + # The user could have moved the cursor backwards on the command-line. + # We need to trigger completion from the $CURRENT location, so we need + # to truncate the command-line ($words) up to the $CURRENT location. + # (We cannot use $CURSOR as its value does not work when a command is an alias.) + words=("${=words[1,CURRENT]}") + __kind_debug "Truncated words[*]: ${words[*]}," + + lastParam=${words[-1]} + lastChar=${lastParam[-1]} + __kind_debug "lastParam: ${lastParam}, lastChar: ${lastChar}" + + # For zsh, when completing a flag with an = (e.g., kind -n=) + # completions must be prefixed with the flag + setopt local_options BASH_REMATCH + if [[ "${lastParam}" =~ '-.*=' ]]; then + # We are dealing with a flag with an = + flagPrefix="-P ${BASH_REMATCH}" + fi + + # Prepare the command to obtain completions + requestComp="${words[1]} __complete ${words[2,-1]}" + if [ "${lastChar}" = "" ]; then + # If the last parameter is complete (there is a space following it) + # We add an extra empty parameter so we can indicate this to the go completion code. + __kind_debug "Adding extra empty parameter" + requestComp="${requestComp} \"\"" + fi + + __kind_debug "About to call: eval ${requestComp}" + + # Use eval to handle any environment variables and such + out=$(eval ${requestComp} 2>/dev/null) + __kind_debug "completion output: ${out}" + + # Extract the directive integer following a : from the last line + local lastLine + while IFS='\n' read -r line; do + lastLine=${line} + done < <(printf "%s\n" "${out[@]}") + __kind_debug "last line: ${lastLine}" + + if [ "${lastLine[1]}" = : ]; then + directive=${lastLine[2,-1]} + # Remove the directive including the : and the newline + local suffix + (( suffix=${#lastLine}+2)) + out=${out[1,-$suffix]} + else + # There is no directive specified. Leave $out as is. + __kind_debug "No directive found. Setting do default" + directive=0 + fi + + __kind_debug "directive: ${directive}" + __kind_debug "completions: ${out}" + __kind_debug "flagPrefix: ${flagPrefix}" + + if [ $((directive & shellCompDirectiveError)) -ne 0 ]; then + __kind_debug "Completion received error. Ignoring completions." + return + fi + + while IFS='\n' read -r comp; do + if [ -n "$comp" ]; then + # If requested, completions are returned with a description. + # The description is preceded by a TAB character. + # For zsh's _describe, we need to use a : instead of a TAB. + # We first need to escape any : as part of the completion itself. + comp=${comp//:/\\:} + + local tab=$(printf '\t') + comp=${comp//$tab/:} + + __kind_debug "Adding completion: ${comp}" + completions+=${comp} + lastComp=$comp + fi + done < <(printf "%s\n" "${out[@]}") + + if [ $((directive & shellCompDirectiveNoSpace)) -ne 0 ]; then + __kind_debug "Activating nospace." + noSpace="-S ''" + fi + + if [ $((directive & shellCompDirectiveFilterFileExt)) -ne 0 ]; then + # File extension filtering + local filteringCmd + filteringCmd='_files' + for filter in ${completions[@]}; do + if [ ${filter[1]} != '*' ]; then + # zsh requires a glob pattern to do file filtering + filter="\*.$filter" + fi + filteringCmd+=" -g $filter" + done + filteringCmd+=" ${flagPrefix}" + + __kind_debug "File filtering command: $filteringCmd" + _arguments '*:filename:'"$filteringCmd" + elif [ $((directive & shellCompDirectiveFilterDirs)) -ne 0 ]; then + # File completion for directories only + local subDir + subdir="${completions[1]}" + if [ -n "$subdir" ]; then + __kind_debug "Listing directories in $subdir" + pushd "${subdir}" >/dev/null 2>&1 + else + __kind_debug "Listing directories in ." + fi + + local result + _arguments '*:dirname:_files -/'" ${flagPrefix}" + result=$? + if [ -n "$subdir" ]; then + popd >/dev/null 2>&1 + fi + return $result + else + __kind_debug "Calling _describe" + if eval _describe "completions" completions $flagPrefix $noSpace; then + __kind_debug "_describe found some completions" + + # Return the success of having called _describe + return 0 + else + __kind_debug "_describe did not find completions." + __kind_debug "Checking if we should do file completion." + if [ $((directive & shellCompDirectiveNoFileComp)) -ne 0 ]; then + __kind_debug "deactivating file completion" + + # We must return an error code here to let zsh know that there were no + # completions found by _describe; this is what will trigger other + # matching algorithms to attempt to find completions. + # For example zsh can match letters in the middle of words. + return 1 + else + # Perform file completion + __kind_debug "Activating file completion" + + # We must return the result of this command, so it must be the + # last command, or else we must store its result to return it. + _arguments '*:filename:_files'" ${flagPrefix}" + fi + fi + fi +} + +# don't run the completion function when being source-ed or eval-ed +if [ "$funcstack[1]" = "_kind" ]; then + _kind +fi