From 9526b57d381db559da41535de1c08cb4225ecdc8 Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Sat, 6 Jan 2024 15:10:15 +0000 Subject: [PATCH] chore(zsh): various tweaks to zsh env setup and helpers --- launch_agents/me.jimeh.logrotate.plist | 2 +- powconfig | 2 +- zsh/google-cloud.zsh | 8 ++----- zsh/kubernetes.zsh | 12 ++++++---- zshenv | 33 +++++++++++++++++++++++--- zshrc | 5 ++++ 6 files changed, 46 insertions(+), 16 deletions(-) diff --git a/launch_agents/me.jimeh.logrotate.plist b/launch_agents/me.jimeh.logrotate.plist index bc5ce7a..2db8aa6 100644 --- a/launch_agents/me.jimeh.logrotate.plist +++ b/launch_agents/me.jimeh.logrotate.plist @@ -17,7 +17,7 @@ EnvironmentVariables PATH - /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/sbin + /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/sbin:/opt/homebrew/bin:/opt/homebrew/sbin StartCalendarInterval diff --git a/powconfig b/powconfig index 39b09a2..b4114c3 100644 --- a/powconfig +++ b/powconfig @@ -1,3 +1,3 @@ export POW_DST_PORT=88 export HOME=~ -export PATH="$HOME/.rbenv/shims:$HOME/.rbenv/bin:/usr/local/bin:$PATH" +export PATH="$HOME/.rbenv/shims:$HOME/.rbenv/bin:/usr/local/bin:/opt/homebrew/bin:$PATH" diff --git a/zsh/google-cloud.zsh b/zsh/google-cloud.zsh index c475550..acdce1a 100644 --- a/zsh/google-cloud.zsh +++ b/zsh/google-cloud.zsh @@ -2,10 +2,6 @@ # Google Cloud SDK setup. # -if [ -f '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.zsh.inc' ]; then - source '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.zsh.inc' -fi - # Lazy load gcloud shell completion on first use. if command-exists gcloud; then _python_argcomplete() { @@ -17,8 +13,8 @@ if command-exists gcloud; then load-gcloud-completion() { unset -f load-gcloud-completion _python_argcomplete - if [ -f '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.inc' ]; then - source '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.inc' + if [ -n "$HOMEBREW_PREFIX" ]; then + source-if-exists "${HOMEBREW_PREFIX}/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.inc" fi } fi diff --git a/zsh/kubernetes.zsh b/zsh/kubernetes.zsh index 48413a3..85e6553 100644 --- a/zsh/kubernetes.zsh +++ b/zsh/kubernetes.zsh @@ -23,11 +23,13 @@ if command-exists kubectl; then } _setup-kubectl-completion - switch() { - unset -f switch - source "$(brew --prefix switch)/switch.sh" - switch "$@" - } + if command-exists brew-prefix; then + switch() { + unset -f switch + source "$(brew-prefix switch)/switch.sh" + switch "$@" + } + fi export KREW_ROOT="$HOME/.krew" path_append "${KREW_ROOT}/bin" diff --git a/zshenv b/zshenv index 011b562..ad8b652 100644 --- a/zshenv +++ b/zshenv @@ -68,6 +68,12 @@ command-exists() { return $? } +source-if-exists() { + if [ -f "$1" ]; then + source "$1" + fi +} + # ============================================================================== # System Environment Setup # ============================================================================== @@ -126,6 +132,26 @@ if [ -f "/opt/homebrew/bin/brew" ]; then eval "$(/opt/homebrew/bin/brew shellenv)" fi +if command-exists brew; then + typeset -A _brew_prefix_cache + + brew-prefix() { + local package="$1" + + if [[ -z "$package" ]]; then + package="__none__" + fi + + if [[ -n "${_brew_prefix_cache[$package]}" ]]; then + echo "${_brew_prefix_cache[$package]}" + else + local result=$(brew --prefix "$package") + _brew_prefix_cache[$package]=$result + echo $result + fi + } +fi + # Linuxbrew if [ -f "/home/linuxbrew/.linuxbrew/bin/brew" ]; then # Inline linux-brew setup to improve shell startup speed by around 200ms. @@ -209,11 +235,12 @@ path_prepend "$HOME/.local/share/rtx/bin" path_prepend "$HOME/.local/share/rtx/shims" # orbstack setup -if [ -f "$HOME/.orbstack/shell/init.zsh" ]; then - source "$HOME/.orbstack/shell/init.zsh" -fi +source-if-exists "$HOME/.orbstack/shell/init.zsh" path_prepend "$HOME/.orbstack/bin" +# Google Cloud SDK setup +source-if-exists "${HOMEBREW_PREFIX}/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.zsh.inc" + # ============================================================================== # Path setup for select binaries installed with zinit # ============================================================================== diff --git a/zshrc b/zshrc index 00f4150..5c8c5b7 100644 --- a/zshrc +++ b/zshrc @@ -116,6 +116,11 @@ fi # Prompt # ============================================================================== +if ! command-exists starship; then + read -q 'REPLY?starship is not installed, install with `rtx install starship`? [y/N]:' && + echo && rtx install starship +fi + if command-exists starship; then eval "$(starship init zsh --print-full-init)"