mirror of
https://github.com/robbyrussell/oh-my-zsh.git
synced 2026-09-29 22:46:06 +02:00
Compare commits
5
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a8da200b18 | ||
|
|
40323d0e37 | ||
|
|
426650fbe8 | ||
|
|
8a5b393088 | ||
|
|
87d4d40418 |
+45
-1
@@ -110,9 +110,53 @@ if [[ -z "$ZSH_COMPDUMP" ]]; then
|
|||||||
ZSH_COMPDUMP="${ZDOTDIR:-$HOME}/.zcompdump-${SHORT_HOST}-${ZSH_VERSION}"
|
ZSH_COMPDUMP="${ZDOTDIR:-$HOME}/.zcompdump-${SHORT_HOST}-${ZSH_VERSION}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Resolve the commit $ZSH is checked out at into $REPLY by reading the git
|
||||||
|
# directory, so that no git process is forked on every startup.
|
||||||
|
# Handles .git files (worktrees, submodules), worktree common dirs, detached
|
||||||
|
# HEADs and packed refs. Returns 1 if anything is unexpected.
|
||||||
|
_omz_git_head() {
|
||||||
|
local gitdir="$ZSH/.git" common head ref
|
||||||
|
local -a lines
|
||||||
|
REPLY=
|
||||||
|
|
||||||
|
# .git may be a file pointing at the real git dir
|
||||||
|
if [[ -f "$gitdir" ]]; then
|
||||||
|
read -r head 2>/dev/null < "$gitdir" || return 1
|
||||||
|
gitdir="${head#gitdir: }"
|
||||||
|
[[ "$gitdir" = /* ]] || gitdir="$ZSH/$gitdir"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# worktrees keep their refs in the common git dir
|
||||||
|
common="$gitdir"
|
||||||
|
if [[ -f "$gitdir/commondir" ]]; then
|
||||||
|
read -r common 2>/dev/null < "$gitdir/commondir" || return 1
|
||||||
|
[[ "$common" = /* ]] || common="$gitdir/$common"
|
||||||
|
fi
|
||||||
|
|
||||||
|
[[ -r "$gitdir/HEAD" ]] || return 1
|
||||||
|
read -r head 2>/dev/null < "$gitdir/HEAD" || return 1
|
||||||
|
|
||||||
|
# detached HEAD: the file holds the commit itself
|
||||||
|
[[ "$head" = ref:\ * ]] || { REPLY="$head"; return 0 }
|
||||||
|
|
||||||
|
ref="${head#ref: }"
|
||||||
|
if [[ -r "$common/$ref" ]]; then
|
||||||
|
read -r REPLY 2>/dev/null < "$common/$ref" || return 1
|
||||||
|
[[ "$REPLY" != ref:\ * ]] || return 1
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
[[ -r "$common/packed-refs" ]] || return 1
|
||||||
|
lines=("${(@f)$(<"$common/packed-refs")}")
|
||||||
|
REPLY="${lines[(r)* ${(b)ref}]%% *}"
|
||||||
|
[[ -n "$REPLY" ]]
|
||||||
|
}
|
||||||
|
|
||||||
# Construct zcompdump OMZ metadata
|
# Construct zcompdump OMZ metadata
|
||||||
zcompdump_revision="#omz revision: $(builtin cd -q "$ZSH"; git rev-parse HEAD 2>/dev/null)"
|
_omz_git_head || REPLY="$(builtin cd -q "$ZSH"; git rev-parse HEAD 2>/dev/null)"
|
||||||
|
zcompdump_revision="#omz revision: $REPLY"
|
||||||
zcompdump_fpath="#omz fpath: $fpath"
|
zcompdump_fpath="#omz fpath: $fpath"
|
||||||
|
unset -f _omz_git_head
|
||||||
|
|
||||||
# Delete the zcompdump file if OMZ zcompdump metadata changed
|
# Delete the zcompdump file if OMZ zcompdump metadata changed
|
||||||
if ! command grep -q -Fx "$zcompdump_revision" "$ZSH_COMPDUMP" 2>/dev/null \
|
if ! command grep -q -Fx "$zcompdump_revision" "$ZSH_COMPDUMP" 2>/dev/null \
|
||||||
|
|||||||
@@ -19,35 +19,54 @@ plugins=(... jj)
|
|||||||
| jjbd | `jj bookmark delete` |
|
| jjbd | `jj bookmark delete` |
|
||||||
| jjbf | `jj bookmark forget` |
|
| jjbf | `jj bookmark forget` |
|
||||||
| jjbl | `jj bookmark list` |
|
| jjbl | `jj bookmark list` |
|
||||||
|
| jjblt | `jj bookmark list --tracked` |
|
||||||
| jjbm | `jj bookmark move` |
|
| jjbm | `jj bookmark move` |
|
||||||
| jjbr | `jj bookmark rename` |
|
| jjbr | `jj bookmark rename` |
|
||||||
| jjbs | `jj bookmark set` |
|
| jjbs | `jj bookmark set` |
|
||||||
| jjbt | `jj bookmark track` |
|
| jjbt | `jj bookmark track` |
|
||||||
| jjbu | `jj bookmark untrack` |
|
| jjbu | `jj bookmark untrack` |
|
||||||
| jjc | `jj commit` |
|
| jjc | `jj commit` |
|
||||||
|
| jjcfg | `jj config` |
|
||||||
|
| jjcfgl | `jj config list` |
|
||||||
| jjcmsg | `jj commit --message` |
|
| jjcmsg | `jj commit --message` |
|
||||||
| jjd | `jj diff` |
|
| jjd | `jj diff` |
|
||||||
| jjdmsg | `jj desc --message` |
|
| jjdmsg | `jj desc --message` |
|
||||||
| jjds | `jj desc` |
|
| jjds | `jj desc` |
|
||||||
|
| jjdst | `jj diff --stat` |
|
||||||
| jje | `jj edit` |
|
| jje | `jj edit` |
|
||||||
|
| jjev | `jj evolog` |
|
||||||
|
| jjf | `jj file` |
|
||||||
|
| jjfl | `jj file list` |
|
||||||
|
| jjg | `jj git` |
|
||||||
| jjgcl | `jj git clone` |
|
| jjgcl | `jj git clone` |
|
||||||
| jjgf | `jj git fetch` |
|
| jjgf | `jj git fetch` |
|
||||||
| jjgfa | `jj git fetch --all-remotes` |
|
| jjgfa | `jj git fetch --all-remotes` |
|
||||||
|
| jjgi | `jj git init` |
|
||||||
| jjgp | `jj git push` |
|
| jjgp | `jj git push` |
|
||||||
| jjgpa | `jj git push --all` |
|
| jjgpa | `jj git push --all` |
|
||||||
| jjgpd | `jj git push --deleted` |
|
| jjgpd | `jj git push --deleted` |
|
||||||
| jjgpt | `jj git push --tracked` |
|
| jjgpt | `jj git push --tracked` |
|
||||||
|
| jjgrl | `jj git remote list` |
|
||||||
| jjl | `jj log` |
|
| jjl | `jj log` |
|
||||||
| jjla | `jj log -r "all()"` |
|
| jjla | `jj log -r "all()"` |
|
||||||
| jjn | `jj new` |
|
| jjn | `jj new` |
|
||||||
| jjnt | `jj new "trunk()"` |
|
| jjnt | `jj new "trunk()"` |
|
||||||
|
| jjop | `jj op` |
|
||||||
|
| jjopl | `jj op log` |
|
||||||
|
| jjor | `jj op restore` |
|
||||||
| jjrb | `jj rebase` |
|
| jjrb | `jj rebase` |
|
||||||
| jjrbm | `jj rebase -d "trunk()"` |
|
| jjrbm | `jj rebase -d "trunk()"` |
|
||||||
| jjrs | `jj restore` |
|
| jjrs | `jj restore` |
|
||||||
| jjrt | `cd "$(jj root \|\| echo .)"` |
|
| jjrt | `cd "$(jj root \|\| echo .)"` |
|
||||||
|
| jjs | `jj show` |
|
||||||
| jjsp | `jj split` |
|
| jjsp | `jj split` |
|
||||||
| jjsq | `jj squash` |
|
| jjsq | `jj squash` |
|
||||||
| jjst | `jj status` |
|
| jjst | `jj status` |
|
||||||
|
| jju | `jj undo` |
|
||||||
|
| jjw | `jj workspace` |
|
||||||
|
| jjwa | `jj workspace add` |
|
||||||
|
| jjwf | `jj workspace forget` |
|
||||||
|
| jjwl | `jj workspace list` |
|
||||||
|
|
||||||
## Prompt usage
|
## Prompt usage
|
||||||
|
|
||||||
|
|||||||
@@ -45,34 +45,51 @@ alias jjbc='jj bookmark create'
|
|||||||
alias jjbd='jj bookmark delete'
|
alias jjbd='jj bookmark delete'
|
||||||
alias jjbf='jj bookmark forget'
|
alias jjbf='jj bookmark forget'
|
||||||
alias jjbl='jj bookmark list'
|
alias jjbl='jj bookmark list'
|
||||||
|
alias jjblt='jj bookmark list --tracked'
|
||||||
alias jjbm='jj bookmark move'
|
alias jjbm='jj bookmark move'
|
||||||
alias jjbr='jj bookmark rename'
|
alias jjbr='jj bookmark rename'
|
||||||
alias jjbs='jj bookmark set'
|
alias jjbs='jj bookmark set'
|
||||||
alias jjbt='jj bookmark track'
|
alias jjbt='jj bookmark track'
|
||||||
alias jjbu='jj bookmark untrack'
|
alias jjbu='jj bookmark untrack'
|
||||||
alias jjc='jj commit'
|
alias jjc='jj commit'
|
||||||
|
alias jjcfg='jj config'
|
||||||
|
alias jjcfgl='jj config list'
|
||||||
alias jjcmsg='jj commit --message'
|
alias jjcmsg='jj commit --message'
|
||||||
alias jjd='jj diff'
|
alias jjd='jj diff'
|
||||||
alias jjdmsg='jj desc --message'
|
alias jjdmsg='jj desc --message'
|
||||||
alias jjds='jj desc'
|
alias jjds='jj desc'
|
||||||
|
alias jjdst='jj diff --stat'
|
||||||
alias jje='jj edit'
|
alias jje='jj edit'
|
||||||
|
alias jjev='jj evolog'
|
||||||
|
alias jjf='jj file'
|
||||||
|
alias jjfl='jj file list'
|
||||||
|
alias jjg='jj git'
|
||||||
alias jjgcl='jj git clone'
|
alias jjgcl='jj git clone'
|
||||||
alias jjgf='jj git fetch'
|
alias jjgf='jj git fetch'
|
||||||
alias jjgfa='jj git fetch --all-remotes'
|
alias jjgfa='jj git fetch --all-remotes'
|
||||||
|
alias jjgi='jj git init'
|
||||||
alias jjgp='jj git push'
|
alias jjgp='jj git push'
|
||||||
alias jjgpa='jj git push --all'
|
alias jjgpa='jj git push --all'
|
||||||
alias jjgpd='jj git push --deleted'
|
alias jjgpd='jj git push --deleted'
|
||||||
alias jjgpt='jj git push --tracked'
|
alias jjgpt='jj git push --tracked'
|
||||||
|
alias jjgrl='jj git remote list'
|
||||||
alias jjl='jj log'
|
alias jjl='jj log'
|
||||||
alias jjla='jj log -r "all()"'
|
alias jjla='jj log -r "all()"'
|
||||||
alias jjn='jj new'
|
alias jjn='jj new'
|
||||||
alias jjnt='jj new "trunk()"'
|
alias jjnt='jj new "trunk()"'
|
||||||
|
alias jjop='jj op'
|
||||||
|
alias jjopl='jj op log'
|
||||||
|
alias jjor='jj op restore'
|
||||||
alias jjrb='jj rebase'
|
alias jjrb='jj rebase'
|
||||||
alias jjrbm='jj rebase -d "trunk()"'
|
alias jjrbm='jj rebase -d "trunk()"'
|
||||||
alias jjrs='jj restore'
|
alias jjrs='jj restore'
|
||||||
alias jjrt='cd "$(jj root || echo .)"'
|
alias jjrt='cd "$(jj root || echo .)"'
|
||||||
|
alias jjs='jj show'
|
||||||
alias jjsp='jj split'
|
alias jjsp='jj split'
|
||||||
alias jjsq='jj squash'
|
alias jjsq='jj squash'
|
||||||
alias jjst='jj status'
|
alias jjst='jj status'
|
||||||
|
alias jju='jj undo'
|
||||||
|
alias jjw='jj workspace'
|
||||||
alias jjwa='jj workspace add'
|
alias jjwa='jj workspace add'
|
||||||
alias jjwf='jj workspace forget'
|
alias jjwf='jj workspace forget'
|
||||||
|
alias jjwl='jj workspace list'
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ plugins=(... kubectl)
|
|||||||
| | | **Secret management** |
|
| | | **Secret management** |
|
||||||
| kgsec | `kubectl get secret` | Get secret for decoding |
|
| kgsec | `kubectl get secret` | Get secret for decoding |
|
||||||
| kgseca | `kubectl get secret --all-namespaces` | List secrets across all namespaces |
|
| kgseca | `kubectl get secret --all-namespaces` | List secrets across all namespaces |
|
||||||
|
| kesec | `kubectl edit secret` | Edit secret resource |
|
||||||
| kdsec | `kubectl describe secret` | Describe secret resource in detail |
|
| kdsec | `kubectl describe secret` | Describe secret resource in detail |
|
||||||
| kdelsec | `kubectl delete secret` | Delete the secret |
|
| kdelsec | `kubectl delete secret` | Delete the secret |
|
||||||
| | | **Deployment management** |
|
| | | **Deployment management** |
|
||||||
|
|||||||
@@ -93,6 +93,7 @@ alias kdelcm='kubectl delete configmap'
|
|||||||
# Secret management
|
# Secret management
|
||||||
alias kgsec='kubectl get secret'
|
alias kgsec='kubectl get secret'
|
||||||
alias kgseca='kubectl get secret --all-namespaces'
|
alias kgseca='kubectl get secret --all-namespaces'
|
||||||
|
alias kesec='kubectl edit secret'
|
||||||
alias kdsec='kubectl describe secret'
|
alias kdsec='kubectl describe secret'
|
||||||
alias kdelsec='kubectl delete secret'
|
alias kdelsec='kubectl delete secret'
|
||||||
|
|
||||||
|
|||||||
@@ -15,8 +15,8 @@
|
|||||||
# - https://github.com/symfony/symfony/blob/5.4/src/Symfony/Component/Console/Resources/completion.bash
|
# - https://github.com/symfony/symfony/blob/5.4/src/Symfony/Component/Console/Resources/completion.bash
|
||||||
#
|
#
|
||||||
_sf_console() {
|
_sf_console() {
|
||||||
local lastParam flagPrefix requestComp out comp
|
local lastParam out comp sf_cmd
|
||||||
local -a completions
|
local -a completions flagPrefix requestComp inputs
|
||||||
|
|
||||||
# The user could have moved the cursor backwards on the command-line.
|
# The user could have moved the cursor backwards on the command-line.
|
||||||
# We need to trigger completion from the $CURRENT location, so we need
|
# We need to trigger completion from the $CURRENT location, so we need
|
||||||
@@ -29,11 +29,20 @@ _sf_console() {
|
|||||||
setopt local_options BASH_REMATCH
|
setopt local_options BASH_REMATCH
|
||||||
if [[ "${lastParam}" =~ '-.*=' ]]; then
|
if [[ "${lastParam}" =~ '-.*=' ]]; then
|
||||||
# We are dealing with a flag with an =
|
# We are dealing with a flag with an =
|
||||||
flagPrefix="-P ${BASH_REMATCH}"
|
flagPrefix=(-P "${BASH_REMATCH}")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Prepare the command to obtain completions
|
# Prepare the command to obtain completions. An alias is resolved here,
|
||||||
requestComp="${words[0]} ${words[1]} _complete --no-interaction -szsh -a1 -c$((CURRENT-1))" i=""
|
# because the request is no longer read again by the shell.
|
||||||
|
sf_cmd="${words[1]}"
|
||||||
|
if [[ -n "${aliases[$sf_cmd]}" ]]; then
|
||||||
|
requestComp=(${(z)aliases[$sf_cmd]})
|
||||||
|
else
|
||||||
|
requestComp=(${~sf_cmd})
|
||||||
|
fi
|
||||||
|
|
||||||
|
requestComp+=(_complete --no-interaction -szsh -a1 "-c$((CURRENT-1))")
|
||||||
|
|
||||||
for w in ${words[@]}; do
|
for w in ${words[@]}; do
|
||||||
w=$(printf -- '%b' "$w")
|
w=$(printf -- '%b' "$w")
|
||||||
# remove quotes from typed values
|
# remove quotes from typed values
|
||||||
@@ -47,19 +56,18 @@ _sf_console() {
|
|||||||
fi
|
fi
|
||||||
# empty values are ignored
|
# empty values are ignored
|
||||||
if [ ! -z "$w" ]; then
|
if [ ! -z "$w" ]; then
|
||||||
i="${i}-i${w} "
|
inputs+=("-i$w")
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# Ensure at least 1 input
|
# Ensure at least 1 input
|
||||||
if [ "${i}" = "" ]; then
|
if (( ! $#inputs )); then
|
||||||
requestComp="${requestComp} -i\" \""
|
inputs=(-i' ')
|
||||||
else
|
|
||||||
requestComp="${requestComp} ${i}"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Use eval to handle any environment variables and such
|
# The request is run without being read again by the shell, so that a
|
||||||
out=$(eval ${requestComp} 2>/dev/null)
|
# "$(...)" or a backtick typed on the command line is not executed
|
||||||
|
out=$(SHELL_VERBOSITY=0 "${requestComp[@]}" "${inputs[@]}" 2>/dev/null)
|
||||||
|
|
||||||
while IFS='\n' read -r comp; do
|
while IFS='\n' read -r comp; do
|
||||||
if [ -n "$comp" ]; then
|
if [ -n "$comp" ]; then
|
||||||
@@ -75,7 +83,7 @@ _sf_console() {
|
|||||||
done < <(printf "%s\n" "${out[@]}")
|
done < <(printf "%s\n" "${out[@]}")
|
||||||
|
|
||||||
# Let inbuilt _describe handle completions
|
# Let inbuilt _describe handle completions
|
||||||
eval _describe "completions" completions $flagPrefix
|
_describe "completions" completions "${flagPrefix[@]}"
|
||||||
return $?
|
return $?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user