mirror of
https://github.com/mr0xb/dotfiles.git
synced 2026-08-28 03:44:57 -04:00
updates
This commit is contained in:
parent
7d1a995f13
commit
396aae995d
11 changed files with 618 additions and 0 deletions
36
.zshrc
Normal file
36
.zshrc
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
eval "$(~/.local/bin/mise activate zsh)"
|
||||||
|
export AWS_VAULT_KEYCHAIN_NAME="aws-vault.keychain-db"
|
||||||
|
|
||||||
|
PATH="/opt/homebrew/opt/gnu-sed/libexec/gnubin:$PATH"
|
||||||
|
PATH="/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH"
|
||||||
|
|
||||||
|
# homebrew completions must be in fpath BEFORE compinit runs
|
||||||
|
fpath=(/opt/homebrew/share/zsh/site-functions $fpath)
|
||||||
|
autoload -U compinit; compinit
|
||||||
|
|
||||||
|
alias kubectl=kubecolor
|
||||||
|
|
||||||
|
# mise completions
|
||||||
|
eval "$(mise completion zsh)"
|
||||||
|
|
||||||
|
export FZF_DEFAULT_OPTS='--height 40% --layout=reverse --border'
|
||||||
|
# fzf key bindings: ctrl+r history, alt+c cd
|
||||||
|
# ctrl+t conflicts with zellij tab mode — remapped to ctrl+f (find files)
|
||||||
|
eval "$(fzf --zsh)"
|
||||||
|
bindkey -M emacs -r '^T'
|
||||||
|
bindkey -M viins -r '^T'
|
||||||
|
bindkey -M vicmd -r '^T'
|
||||||
|
bindkey -M emacs '^F' fzf-file-widget
|
||||||
|
bindkey -M viins '^F' fzf-file-widget
|
||||||
|
bindkey -M vicmd '^F' fzf-file-widget
|
||||||
|
|
||||||
|
source /opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||||||
|
export ZSH_HIGHLIGHT_HIGHLIGHTERS_DIR=/opt/homebrew/share/zsh-syntax-highlighting/highlighters
|
||||||
|
|
||||||
|
[ -d $HOME/.zshrc.d ] && for file in $HOME/.zshrc.d/*.zsh; do source $file; done
|
||||||
|
# compdef must run after _kubectl is defined in .zshrc.d/kubectl_comp.sh
|
||||||
|
compdef kubecolor=kubectl
|
||||||
|
source ~/.local/share/fzf-tab/fzf-tab.plugin.zsh
|
||||||
|
source ~/.config/themes/fzf-challengerdeep.sh
|
||||||
|
|
||||||
|
eval "$(starship init zsh)"
|
||||||
21
.zshrc.d/_cht
Normal file
21
.zshrc.d/_cht
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
#compdef cht.sh
|
||||||
|
|
||||||
|
__CHTSH_LANGS=($(curl -s cheat.sh/:list))
|
||||||
|
_arguments -C \
|
||||||
|
'--help[show this help message and exit]: :->noargs' \
|
||||||
|
'--shell[enter shell repl]: :->noargs' \
|
||||||
|
'1:Cheat Sheet:->lang' \
|
||||||
|
'*::: :->noargs' && return 0
|
||||||
|
|
||||||
|
if [[ CURRENT -ge 1 ]]; then
|
||||||
|
case $state in
|
||||||
|
noargs)
|
||||||
|
_message "nothing to complete";;
|
||||||
|
lang)
|
||||||
|
compadd -X "Cheat Sheets" ${__CHTSH_LANGS[@]};;
|
||||||
|
*)
|
||||||
|
_message "Unknown state, error in autocomplete";;
|
||||||
|
esac
|
||||||
|
|
||||||
|
return
|
||||||
|
fi
|
||||||
177
.zshrc.d/aliases.zsh
Normal file
177
.zshrc.d/aliases.zsh
Normal file
|
|
@ -0,0 +1,177 @@
|
||||||
|
#===================================
|
||||||
|
# DIRECTORY MANAGEMENT
|
||||||
|
#===================================
|
||||||
|
alias ..='cd ..'
|
||||||
|
alias .1='cd ..'
|
||||||
|
alias .2='cd ../../'
|
||||||
|
alias .3='cd ../../../'
|
||||||
|
alias .4='../../../../'
|
||||||
|
alias .5='cd ../../../../../'
|
||||||
|
alias APPS='cd ${HOME}/GIT_REPOS/APPLICATION-DEPLOYMENTS'
|
||||||
|
alias INFRA='cd ${HOME}/GIT_REPOS/CLOUD-INFRASTRUCTURE-TERRAFORM'
|
||||||
|
alias EKS-BASE='cd ${HOME}/GIT_REPOS/EKS-BASE-DEPLOY'
|
||||||
|
alias K8S-BASE='cd ${HOME}/GIT_REPOS/K8S-BASE-DEPLOY'
|
||||||
|
alias config='/usr/bin/git --git-dir=$HOME/.cfg/.git/ --work-tree=$HOME'
|
||||||
|
|
||||||
|
|
||||||
|
#===================================
|
||||||
|
# COMMAND MODIFICATIONS & REMAPS
|
||||||
|
#===================================
|
||||||
|
alias l='lsd'
|
||||||
|
alias la='lsd -aF'
|
||||||
|
alias vi='nvim'
|
||||||
|
alias dog='cat'
|
||||||
|
alias grep='grep --color=auto'
|
||||||
|
alias Grep='grep'
|
||||||
|
alias Gerp='grep'
|
||||||
|
alias gerp='grep'
|
||||||
|
alias fgrep='fgrep --color=auto'
|
||||||
|
alias egrep='egrep --color=auto'
|
||||||
|
alias nano='nvim'
|
||||||
|
alias emacs='nvim'
|
||||||
|
alias notepad.exe='nvim'
|
||||||
|
alias diff='colordiff --side-by-side --suppress-common-lines'
|
||||||
|
alias header='curl -I'
|
||||||
|
alias headerc='curl -I --compress'
|
||||||
|
|
||||||
|
#===================================
|
||||||
|
# AWS & INFRA-TOOLS
|
||||||
|
#===================================
|
||||||
|
#AWS
|
||||||
|
alias ac='aws-cred'
|
||||||
|
alias av='aws-vault'
|
||||||
|
alias tg='terragrunt'
|
||||||
|
|
||||||
|
#Terraform / Terragrun
|
||||||
|
alias tgp="terragrunt plan"
|
||||||
|
alias tgps="terragrunt plan --terragrunt-source-update"
|
||||||
|
alias tglo="terragrunt providers lock -platform=linux_arm64 -platform=linux_amd64 -platform=darwin_amd64 -platform=darwin_arm6"
|
||||||
|
alias tga="terragrunt apply"
|
||||||
|
alias tgaA="terragrunt apply -auto-approve"
|
||||||
|
alias tgas="terragrunt apply --terragrunt-source-update"
|
||||||
|
alias tgasA="terragrunt apply --terragrunt-source-update -auto-approve"
|
||||||
|
alias tgi="terragrunt init"
|
||||||
|
alias tgis="terragrunt init --terragrunt-source-update"
|
||||||
|
alias tgo="terragrunt output"
|
||||||
|
|
||||||
|
#Kuberenetes
|
||||||
|
alias kx='kubectx'
|
||||||
|
alias kn='kubens'
|
||||||
|
alias ku='kustomize'
|
||||||
|
alias kub='kustomize build --enable-alpha-plugins --load-restrictor LoadRestrictionsNone'
|
||||||
|
alias k='kubectl'
|
||||||
|
alias kg='kubectl get'
|
||||||
|
alias kd='kubectl describe'
|
||||||
|
alias kge='kubectl get events'
|
||||||
|
alias kgp='kubectl get pods'
|
||||||
|
alias kgprca="kubectl get pods --all-namespaces --sort-by='.status.containerStatuses[0].restartCount'"
|
||||||
|
alias kgprc="kubectl get pods --sort-by='.status.containerStatuses[0].restartCount'"
|
||||||
|
#alias kgn='kubectl get nodes'
|
||||||
|
alias kgn='kubectl get nodes --sort-by=.metadata.creationTimestamp'
|
||||||
|
alias kgic='kubectl get ingressclass'
|
||||||
|
alias kdic='kubectl describe ingressclass'
|
||||||
|
alias kgpv='kubectl get pv'
|
||||||
|
alias kdpv='kubectl describe pv'
|
||||||
|
alias klt='kubectl logs -f'
|
||||||
|
alias kbug='kubectl run -i --tty --rm debug --image=ubuntu --restart=Never -- /bin/bash'
|
||||||
|
alias kgsec='kubectl get secret'
|
||||||
|
alias kgj='kubectl get job'
|
||||||
|
alias fqdn="kubectl get ingress -o json | jq '.items[] | .metadata.namespace + \": \" + .metadata.annotations.\"external-dns.alpha.kubernetes.io/hostname\"'"
|
||||||
|
alias fqdna="kubectl get ingress --all-namespaces -o json | jq '.items[] | .metadata.namespace + \": \" + .metadata.annotations.\"external-dns.alpha.kubernetes.io/hostname\"'"
|
||||||
|
#Kubernetes + Teleport
|
||||||
|
alias tkl='tsh kube ls'
|
||||||
|
kutil () {
|
||||||
|
for host in $(kubectl get nodes --no-headers | cut -d' ' -f1)
|
||||||
|
do
|
||||||
|
echo "$host - $(kubectl get nodes -o jsonpath='{.metadata.labels.topology\.kubernetes\.io/zone}' $host)"
|
||||||
|
kubectl describe node "$host" | grep --color Allocated -A 5 | grep --color -ve Event -ve Allocated -ve percent -ve --
|
||||||
|
echo
|
||||||
|
done
|
||||||
|
}
|
||||||
|
#===================================
|
||||||
|
# USEFUL / CONVIENENCE
|
||||||
|
#===================================
|
||||||
|
alias untar='tar -zxvf'
|
||||||
|
alias lstar='tar -tvf'
|
||||||
|
alias perms='stat -f "%A %Sp -> owner=%SHp group=%SMp other=%SLp"'
|
||||||
|
#alias pydocs="elinks https://docs.python.org/$(python --version | awk '{print $2}' | sed 's/\.[0-9]*$//')/py-modindex.html"
|
||||||
|
alias pydocs="open https://docs.python.org/$(python3 --version | awk '{print $2}' | sed 's/\.[0-9]*$//')/py-modindex.html"
|
||||||
|
alias hr='printf $(printf "\e[$(shuf -i 91-97 -n 1);1m%%%ds\e[0m\n" $(tput cols)) | tr " " ='
|
||||||
|
alias iac='cd $HOME/projects/IAC'
|
||||||
|
|
||||||
|
|
||||||
|
#===================================
|
||||||
|
# DO THE SAFETY DANCE
|
||||||
|
#===================================
|
||||||
|
alias cp='cp -i'
|
||||||
|
alias rm='rm -i'
|
||||||
|
alias ln='ln -i'
|
||||||
|
alias mv='mv -i'
|
||||||
|
|
||||||
|
#===================================
|
||||||
|
# MAC
|
||||||
|
#===================================
|
||||||
|
alias fudns='sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder'
|
||||||
|
|
||||||
|
#===================================
|
||||||
|
# MISC
|
||||||
|
#===================================
|
||||||
|
if [ $UID -ne 0 ]; then
|
||||||
|
alias reboot='sudo reboot'
|
||||||
|
if [[ $OSTYPE != 'darwin'* ]]; then
|
||||||
|
alias upgradeall='sudo apt-get update && sudo apt-get upgrade'
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
#===================================
|
||||||
|
# FUNCS
|
||||||
|
#===================================
|
||||||
|
#exa deprecated, replacing with lsd (github.com/lsd-rs/lsd)
|
||||||
|
#alias ls ='lsd'
|
||||||
|
#i use exa and have ls muscle memory, current version of exa does not take -t and will error out#this is a fair work around; https://github.com/ogham/exa/issues/519#issuecomment-560608534
|
||||||
|
#function ls {
|
||||||
|
# if [ "$1" = "-ltr" ]; then
|
||||||
|
# exa -lsnew "${@:2}" -l -F --color=auto --icons
|
||||||
|
# elif [ "$1" = "-lrt" ]; then
|
||||||
|
# exa -lsnew "${@:2}" -l -F --color=auto --icons
|
||||||
|
# elif [ "$1" = "-latr" ]; then
|
||||||
|
# exa -lsnew "${@:2}" -la -F --color=auto --icons
|
||||||
|
# elif [ "$1" = "-lahtr" ]; then
|
||||||
|
# exa -lsnew "${@:2}" -lah -F --color=auto --icons
|
||||||
|
# elif [ "$1" = "-alhtr" ]; then
|
||||||
|
# exa -lsnew "${@:2}" -lah -F --color=auto --icons
|
||||||
|
# elif [ "$1" = "latr" ]; then
|
||||||
|
# exa -lsnew "${@:3}" -lah -F --color=auto --icons
|
||||||
|
# elif [ "$1" = "altr" ]; then
|
||||||
|
# exa -lsnew "${@:3}" -lah -F --color=auto --icons
|
||||||
|
# elif [ "$1" = "lahtr" ]; then
|
||||||
|
# exa -lsnew "${@:3}" -lah -F --color=auto --icons
|
||||||
|
# elif [ "$1" = "-altr" ]; then
|
||||||
|
# exa -lsnew "${@:2}" -lah -F --color=auto --icons
|
||||||
|
# elif [ "$1" = "a-ltr" ]; then
|
||||||
|
# exa -lsnew "${@:2}" -lah -F --color=auto --icons
|
||||||
|
# else
|
||||||
|
# exa "$@" -a
|
||||||
|
# fi
|
||||||
|
#}
|
||||||
|
|
||||||
|
function urlencode {
|
||||||
|
python -c "import sys; from urllib.parse import quote_plus; print(quote_plus(sys.stdin.read()))"
|
||||||
|
}
|
||||||
|
|
||||||
|
function urldecode {
|
||||||
|
python -c "import sys; from urllib.parse import unquote; print(unquote(sys.stdin.read()), end='')"
|
||||||
|
}
|
||||||
|
|
||||||
|
function tfdocs {
|
||||||
|
open "https://registry.terraform.io/search/providers?q=`echo "${@}" | urlencode`"
|
||||||
|
}
|
||||||
|
|
||||||
|
function google {
|
||||||
|
open "https://www.google.com/search?q=`echo "${@}" | urlencode`"
|
||||||
|
}
|
||||||
|
|
||||||
|
function hred () {
|
||||||
|
[ $# -ge 1 -a -f "$1" ] && input="$1" || input="-"
|
||||||
|
cat $input | grep --color -E -v '^\s*$|^\s*#.*$'
|
||||||
|
}
|
||||||
28
.zshrc.d/fr.zsh
Normal file
28
.zshrc.d/fr.zsh
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
#!/bin/bash
|
||||||
|
fr () {
|
||||||
|
FIND="$1"
|
||||||
|
REPLACE="$2"
|
||||||
|
FILTER="$3"
|
||||||
|
if [ -z "${FIND}" ] || [ -z "${REPLACE}" ]
|
||||||
|
then
|
||||||
|
echo "ERR: must include two parameters for find and replace" >&2
|
||||||
|
fr_usage
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
if command -v rg 2>&1 > /dev/null
|
||||||
|
then
|
||||||
|
if [ -z "${FILTER}" ]
|
||||||
|
then
|
||||||
|
rg --hidden --glob '!.git/' -l "$FIND" | xargs sed -i "s/${FIND}/${REPLACE}/g"
|
||||||
|
else
|
||||||
|
rg --hidden --glob '!.git/' -l "$FIND" | rg --hidden --glob '!.git/' -i "$FILTER" | xargs sed -i "s/${FIND}/${REPLACE}/g"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ -z "${FILTER}" ]
|
||||||
|
then
|
||||||
|
grep --color -l "$FIND" | xargs sed -i "s/${FIND}/${REPLACE}/g"
|
||||||
|
else
|
||||||
|
grep --color -l "$FIND" | grep --color -i "$FILTER" | xargs sed -i "s/${FIND}/${REPLACE}/g"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
6
.zshrc.d/gopath.zsh
Normal file
6
.zshrc.d/gopath.zsh
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
# GoPath stuff
|
||||||
|
export PATH="$PATH:${HOME}/.bin"
|
||||||
|
export GOPATH="${HOME}/go"
|
||||||
|
export GOBIN="${HOME}/go/bin/"
|
||||||
|
export PATH=$PATH:$GOROOT/bin:$GOBIN
|
||||||
|
export HISTCONTROL=ignorespace:ignoredups
|
||||||
5
.zshrc.d/hred.zsh
Normal file
5
.zshrc.d/hred.zsh
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
|
||||||
|
hred() {
|
||||||
|
[ $# -ge 1 -a -f "$1" ] && input="$1" || input="-"
|
||||||
|
cat $input | grep -E -v '^\s*$|^\s*#.*$'
|
||||||
|
}
|
||||||
228
.zshrc.d/kubectl_comp.zsh
Normal file
228
.zshrc.d/kubectl_comp.zsh
Normal file
|
|
@ -0,0 +1,228 @@
|
||||||
|
#compdef kubectl
|
||||||
|
compdef _kubectl kubectl
|
||||||
|
|
||||||
|
# Copyright 2016 The Kubernetes Authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#compdef kubectl
|
||||||
|
compdef _kubectl kubectl
|
||||||
|
|
||||||
|
# zsh completion for kubectl -*- shell-script -*-
|
||||||
|
|
||||||
|
__kubectl_debug()
|
||||||
|
{
|
||||||
|
local file="$BASH_COMP_DEBUG_FILE"
|
||||||
|
if [[ -n ${file} ]]; then
|
||||||
|
echo "$*" >> "${file}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
_kubectl()
|
||||||
|
{
|
||||||
|
local shellCompDirectiveError=1
|
||||||
|
local shellCompDirectiveNoSpace=2
|
||||||
|
local shellCompDirectiveNoFileComp=4
|
||||||
|
local shellCompDirectiveFilterFileExt=8
|
||||||
|
local shellCompDirectiveFilterDirs=16
|
||||||
|
local shellCompDirectiveKeepOrder=32
|
||||||
|
|
||||||
|
local lastParam lastChar flagPrefix requestComp out directive comp lastComp noSpace keepOrder
|
||||||
|
local -a completions
|
||||||
|
|
||||||
|
__kubectl_debug "\n========= starting completion logic =========="
|
||||||
|
__kubectl_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]}")
|
||||||
|
__kubectl_debug "Truncated words[*]: ${words[*]},"
|
||||||
|
|
||||||
|
lastParam=${words[-1]}
|
||||||
|
lastChar=${lastParam[-1]}
|
||||||
|
__kubectl_debug "lastParam: ${lastParam}, lastChar: ${lastChar}"
|
||||||
|
|
||||||
|
# For zsh, when completing a flag with an = (e.g., kubectl -n=<TAB>)
|
||||||
|
# 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.
|
||||||
|
__kubectl_debug "Adding extra empty parameter"
|
||||||
|
requestComp="${requestComp} \"\""
|
||||||
|
fi
|
||||||
|
|
||||||
|
__kubectl_debug "About to call: eval ${requestComp}"
|
||||||
|
|
||||||
|
# Use eval to handle any environment variables and such
|
||||||
|
out=$(eval ${requestComp} 2>/dev/null)
|
||||||
|
__kubectl_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[@]}")
|
||||||
|
__kubectl_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.
|
||||||
|
__kubectl_debug "No directive found. Setting do default"
|
||||||
|
directive=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
__kubectl_debug "directive: ${directive}"
|
||||||
|
__kubectl_debug "completions: ${out}"
|
||||||
|
__kubectl_debug "flagPrefix: ${flagPrefix}"
|
||||||
|
|
||||||
|
if [ $((directive & shellCompDirectiveError)) -ne 0 ]; then
|
||||||
|
__kubectl_debug "Completion received error. Ignoring completions."
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
local activeHelpMarker="_activeHelp_ "
|
||||||
|
local endIndex=${#activeHelpMarker}
|
||||||
|
local startIndex=$((${#activeHelpMarker}+1))
|
||||||
|
local hasActiveHelp=0
|
||||||
|
while IFS='\n' read -r comp; do
|
||||||
|
# Check if this is an activeHelp statement (i.e., prefixed with $activeHelpMarker)
|
||||||
|
if [ "${comp[1,$endIndex]}" = "$activeHelpMarker" ];then
|
||||||
|
__kubectl_debug "ActiveHelp found: $comp"
|
||||||
|
comp="${comp[$startIndex,-1]}"
|
||||||
|
if [ -n "$comp" ]; then
|
||||||
|
compadd -x "${comp}"
|
||||||
|
__kubectl_debug "ActiveHelp will need delimiter"
|
||||||
|
hasActiveHelp=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
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/:}
|
||||||
|
|
||||||
|
__kubectl_debug "Adding completion: ${comp}"
|
||||||
|
completions+=${comp}
|
||||||
|
lastComp=$comp
|
||||||
|
fi
|
||||||
|
done < <(printf "%s\n" "${out[@]}")
|
||||||
|
|
||||||
|
# Add a delimiter after the activeHelp statements, but only if:
|
||||||
|
# - there are completions following the activeHelp statements, or
|
||||||
|
# - file completion will be performed (so there will be choices after the activeHelp)
|
||||||
|
if [ $hasActiveHelp -eq 1 ]; then
|
||||||
|
if [ ${#completions} -ne 0 ] || [ $((directive & shellCompDirectiveNoFileComp)) -eq 0 ]; then
|
||||||
|
__kubectl_debug "Adding activeHelp delimiter"
|
||||||
|
compadd -x "--"
|
||||||
|
hasActiveHelp=0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $((directive & shellCompDirectiveNoSpace)) -ne 0 ]; then
|
||||||
|
__kubectl_debug "Activating nospace."
|
||||||
|
noSpace="-S ''"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $((directive & shellCompDirectiveKeepOrder)) -ne 0 ]; then
|
||||||
|
__kubectl_debug "Activating keep order."
|
||||||
|
keepOrder="-V"
|
||||||
|
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}"
|
||||||
|
|
||||||
|
__kubectl_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
|
||||||
|
__kubectl_debug "Listing directories in $subdir"
|
||||||
|
pushd "${subdir}" >/dev/null 2>&1
|
||||||
|
else
|
||||||
|
__kubectl_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
|
||||||
|
__kubectl_debug "Calling _describe"
|
||||||
|
if eval _describe $keepOrder "completions" completions $flagPrefix $noSpace; then
|
||||||
|
__kubectl_debug "_describe found some completions"
|
||||||
|
|
||||||
|
# Return the success of having called _describe
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
__kubectl_debug "_describe did not find completions."
|
||||||
|
__kubectl_debug "Checking if we should do file completion."
|
||||||
|
if [ $((directive & shellCompDirectiveNoFileComp)) -ne 0 ]; then
|
||||||
|
__kubectl_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
|
||||||
|
__kubectl_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]" = "_kubectl" ]; then
|
||||||
|
_kubectl
|
||||||
|
fi
|
||||||
102
.zshrc.d/starship_init.sh
Normal file
102
.zshrc.d/starship_init.sh
Normal file
|
|
@ -0,0 +1,102 @@
|
||||||
|
# ZSH has a quirk where `preexec` is only run if a command is actually run (i.e
|
||||||
|
# pressing ENTER at an empty command line will not cause preexec to fire). This
|
||||||
|
# can cause timing issues, as a user who presses "ENTER" without running a command
|
||||||
|
# will see the time to the start of the last command, which may be very large.
|
||||||
|
|
||||||
|
# To fix this, we create STARSHIP_START_TIME upon preexec() firing, and destroy it
|
||||||
|
# after drawing the prompt. This ensures that the timing for one command is only
|
||||||
|
# ever drawn once (for the prompt immediately after it is run).
|
||||||
|
|
||||||
|
zmodload zsh/parameter # Needed to access jobstates variable for STARSHIP_JOBS_COUNT
|
||||||
|
|
||||||
|
# Defines a function `__starship_get_time` that sets the time since epoch in millis in STARSHIP_CAPTURED_TIME.
|
||||||
|
if [[ $ZSH_VERSION == ([1-4]*) ]]; then
|
||||||
|
# ZSH <= 5; Does not have a built-in variable so we will rely on Starship's inbuilt time function.
|
||||||
|
__starship_get_time() {
|
||||||
|
STARSHIP_CAPTURED_TIME=$(/Users/steve.briggs/.local/share/mise/installs/starship/latest/starship time)
|
||||||
|
}
|
||||||
|
else
|
||||||
|
zmodload zsh/datetime
|
||||||
|
zmodload zsh/mathfunc
|
||||||
|
__starship_get_time() {
|
||||||
|
(( STARSHIP_CAPTURED_TIME = int(rint(EPOCHREALTIME * 1000)) ))
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# The two functions below follow the naming convention `prompt_<theme>_<hook>`
|
||||||
|
# for compatibility with Zsh's prompt system. See
|
||||||
|
# https://github.com/zsh-users/zsh/blob/2876c25a28b8052d6683027998cc118fc9b50157/Functions/Prompts/promptinit#L155
|
||||||
|
|
||||||
|
# Runs before each new command line.
|
||||||
|
prompt_starship_precmd() {
|
||||||
|
# Save the status, because subsequent commands in this function will change $?
|
||||||
|
STARSHIP_CMD_STATUS=$? STARSHIP_PIPE_STATUS=(${pipestatus[@]})
|
||||||
|
|
||||||
|
# Calculate duration if a command was executed
|
||||||
|
if (( ${+STARSHIP_START_TIME} )); then
|
||||||
|
# If an arithmetic expression evaluates to 0, its exit status is 1:
|
||||||
|
# "The return status is 0 if the arithmetic value of the expression is non-zero, 1 if it is zero, and 2 if an error occurred."
|
||||||
|
# In rare cases, the subtraction below can result in an int 0 result (yes, really),
|
||||||
|
# which would then kill the shell if 'set -e' is in effect.
|
||||||
|
# We therefore have to assign the result outside the expression (using 'STARSHIP_DURATION=$((...))'),
|
||||||
|
# because unlike '(())', '$(())' gets a return status of 0 even if the expression evaluates to int 0
|
||||||
|
# (but it still surfaces a potential error, normally status 2, as status 1).
|
||||||
|
__starship_get_time && STARSHIP_DURATION=$(( STARSHIP_CAPTURED_TIME - STARSHIP_START_TIME ))
|
||||||
|
unset STARSHIP_START_TIME
|
||||||
|
# Drop status and duration otherwise
|
||||||
|
else
|
||||||
|
unset STARSHIP_DURATION STARSHIP_CMD_STATUS STARSHIP_PIPE_STATUS
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Use length of jobstates array as number of jobs. Expansion fails inside
|
||||||
|
# quotes so we set it here and then use the value later on.
|
||||||
|
STARSHIP_JOBS_COUNT="${#jobstates[*]}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Runs after the user submits the command line, but before it is executed and
|
||||||
|
# only if there's an actual command to run
|
||||||
|
prompt_starship_preexec() {
|
||||||
|
__starship_get_time && STARSHIP_START_TIME=$STARSHIP_CAPTURED_TIME
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add hook functions
|
||||||
|
autoload -Uz add-zsh-hook
|
||||||
|
add-zsh-hook precmd prompt_starship_precmd
|
||||||
|
add-zsh-hook preexec prompt_starship_preexec
|
||||||
|
|
||||||
|
# Set up a function to redraw the prompt if the user switches vi modes
|
||||||
|
starship_zle-keymap-select() {
|
||||||
|
zle reset-prompt
|
||||||
|
}
|
||||||
|
|
||||||
|
## Check for existing keymap-select widget.
|
||||||
|
if [[ -v widgets[zle-keymap-select] ]]; then
|
||||||
|
# zle-keymap-select is a special widget so it'll be "user:fnName" or nothing. Let's get fnName only.
|
||||||
|
__starship_preserved_zle_keymap_select=${widgets[zle-keymap-select]#user:}
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z ${__starship_preserved_zle_keymap_select:-} ]]; then
|
||||||
|
zle -N zle-keymap-select starship_zle-keymap-select;
|
||||||
|
else
|
||||||
|
# Define a wrapper fn to call the original widget fn and then Starship's.
|
||||||
|
starship_zle-keymap-select-wrapped() {
|
||||||
|
$__starship_preserved_zle_keymap_select "$@";
|
||||||
|
starship_zle-keymap-select "$@";
|
||||||
|
}
|
||||||
|
zle -N zle-keymap-select starship_zle-keymap-select-wrapped;
|
||||||
|
fi
|
||||||
|
|
||||||
|
export STARSHIP_SHELL="zsh"
|
||||||
|
|
||||||
|
# Set up the session key that will be used to store logs
|
||||||
|
STARSHIP_SESSION_KEY="$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM"; # Random generates a number b/w 0 - 32767
|
||||||
|
STARSHIP_SESSION_KEY="${STARSHIP_SESSION_KEY}0000000000000000" # Pad it to 16+ chars.
|
||||||
|
export STARSHIP_SESSION_KEY=${STARSHIP_SESSION_KEY:0:16}; # Trim to 16-digits if excess.
|
||||||
|
|
||||||
|
VIRTUAL_ENV_DISABLE_PROMPT=1
|
||||||
|
|
||||||
|
setopt promptsubst
|
||||||
|
|
||||||
|
PROMPT='$('/Users/steve.briggs/.local/share/mise/installs/starship/latest/starship' prompt --terminal-width="$COLUMNS" --keymap="${KEYMAP:-}" --status="${STARSHIP_CMD_STATUS:-}" --pipestatus="${STARSHIP_PIPE_STATUS[*]:-}" --cmd-duration="${STARSHIP_DURATION:-}" --jobs="$STARSHIP_JOBS_COUNT")'
|
||||||
|
RPROMPT='$('/Users/steve.briggs/.local/share/mise/installs/starship/latest/starship' prompt --right --terminal-width="$COLUMNS" --keymap="${KEYMAP:-}" --status="${STARSHIP_CMD_STATUS:-}" --pipestatus="${STARSHIP_PIPE_STATUS[*]:-}" --cmd-duration="${STARSHIP_DURATION:-}" --jobs="$STARSHIP_JOBS_COUNT")'
|
||||||
|
PROMPT2="$(/Users/steve.briggs/.local/share/mise/installs/starship/latest/starship prompt --continuation)"
|
||||||
3
.zshrc.d/teleport.zsh
Normal file
3
.zshrc.d/teleport.zsh
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
export TELEPORT_PROXY=transporter.ic-ops.com:443
|
||||||
|
export TELEPORT_CLUSTER=transporter.ic-ops.com
|
||||||
|
export TELEPORT_USER=steve.briggs@immuta.com
|
||||||
1
.zshrc.d/vscodepath.ksh
Normal file
1
.zshrc.d/vscodepath.ksh
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
export PATH=$PATH:/usr/local/bin/code
|
||||||
11
.zshrc.d/work-immuta.zsh
Normal file
11
.zshrc.d/work-immuta.zsh
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
export VAULT_ADDR=https://vault.immuta.io:8200
|
||||||
|
#export VAULT_ADDR=https://vault.infrastructure.immuta.io:8200
|
||||||
|
export VAULT_TOKEN=$(cat ~/.vault-token)
|
||||||
|
|
||||||
|
export AWS_VAULT_BACKEND=keychain
|
||||||
|
export AWS_VAULT_KEYCHAIN_NAME="aws-vault"
|
||||||
|
export AWS_LOGIN_BROWSER="firefox"
|
||||||
|
|
||||||
|
#export KUBECONFIG=/Users/steve.briggs/.kube/config:/Users/steve.briggs/.kube/minikube
|
||||||
|
export KUBECONFIG="${HOME}/.kube/teleport-kubeconfig:${HOME}/.kube/config:${HOME}/.kube/minikube"
|
||||||
|
export PATH=$PATH:/private/var/folders/ky/m6p32md91_n2q6z94fdn8fsw0000gq/T/AppTranslocation/F252CD76-5A71-4D7F-8826-12175DB43E32/d/Visual\ Studio\ Code.app/Contents/Resources/app/bin
|
||||||
Loading…
Reference in a new issue