mirror of
https://github.com/robbyrussell/oh-my-zsh.git
synced 2026-10-05 01:13:49 +02:00
Compare commits
30
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
06d207d8c3 | ||
|
|
4d4cfc287e | ||
|
|
92bf53f1ae | ||
|
|
5c4bb4aec5 | ||
|
|
868da9cfd5 | ||
|
|
83a0ec79ee | ||
|
|
c5852b1101 | ||
|
|
68795c2170 | ||
|
|
f809d46c10 | ||
|
|
0431f1c33d | ||
|
|
a3c88eba72 | ||
|
|
6881f37316 | ||
|
|
1d66682636 | ||
|
|
ce7f8c3224 | ||
|
|
f8e13d714e | ||
|
|
95ba6ae764 | ||
|
|
74965c9609 | ||
|
|
1b2d741f19 | ||
|
|
4ccc63333c | ||
|
|
40bddc3c1a | ||
|
|
8d421b6309 | ||
|
|
7d1b2a25ca | ||
|
|
86ef6555e0 | ||
|
|
32d7277ac3 | ||
|
|
e0d3557e14 | ||
|
|
b6830a53d5 | ||
|
|
fa82d8a3eb | ||
|
|
6421f8e104 | ||
|
|
0b50afdbfd | ||
|
|
157eb033f2 |
No files matched your search
@@ -5,6 +5,7 @@ plugins/eza/ @pepoluan
|
||||
plugins/genpass/ @atoponce
|
||||
plugins/git-lfs/ @hellovietduc
|
||||
plugins/gitfast/ @felipec
|
||||
plugins/hermes/ @Uhm-why
|
||||
plugins/kube-ps1/ @mcornella
|
||||
plugins/kubectl/ @mcornella
|
||||
plugins/kubectx/ @mcornella
|
||||
|
||||
@@ -12,14 +12,14 @@ dependencies:
|
||||
plugins/gradle:
|
||||
repo: gradle/gradle-completion
|
||||
branch: master
|
||||
version: e7c881dbef7462bc35ad05328397e1582fe25cb8
|
||||
version: 05693a01fcb246bc4e8fc32a8d561dc537aaedf2
|
||||
precopy: |
|
||||
set -e
|
||||
find . ! -name _gradle ! -name LICENSE -delete
|
||||
plugins/history-substring-search:
|
||||
repo: zsh-users/zsh-history-substring-search
|
||||
branch: master
|
||||
version: 14c8d2e0ffaee98f2df9850b19944f32546fdea5
|
||||
version: a0bdb0d47dbaba31dba2db7af8c48a5d9c74049a
|
||||
precopy: |
|
||||
set -e
|
||||
rm -f zsh-history-substring-search.plugin.zsh
|
||||
@@ -30,7 +30,7 @@ dependencies:
|
||||
plugins/kube-ps1:
|
||||
repo: jonmosco/kube-ps1
|
||||
branch: master
|
||||
version: b4cd09ec8d4dc007173e28da40aeebf8eff8c87f
|
||||
version: 7aaaeee5eaa29f920acd850ea63839d9f87b8ac5
|
||||
precopy: |
|
||||
set -e
|
||||
find . ! -name kube-ps1.sh ! -name LICENSE ! -name README.md -delete
|
||||
@@ -46,7 +46,7 @@ dependencies:
|
||||
plugins/z:
|
||||
branch: master
|
||||
repo: agkozak/zsh-z
|
||||
version: 102fb78036ed76feedf623907483691777a1d510
|
||||
version: 7f8ff4df11b50a14e3666c7cd212baa399c9b92a
|
||||
precopy: |
|
||||
set -e
|
||||
rm -r tests
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
certifi==2026.7.22
|
||||
charset-normalizer==3.5.1
|
||||
idna==3.19
|
||||
idna==3.20
|
||||
PyYAML==6.0.3
|
||||
requests==2.34.2
|
||||
semver==3.0.4
|
||||
urllib3==2.7.0
|
||||
semver==3.1.0
|
||||
urllib3==2.8.0
|
||||
@@ -60,6 +60,6 @@ jobs:
|
||||
retention-days: 5
|
||||
|
||||
- name: "Upload to code-scanning"
|
||||
uses: github/codeql-action/upload-sarif@b96794f015dfd88f77b49b1c93e0fa7110f94c63 # v4.38.0
|
||||
uses: github/codeql-action/upload-sarif@2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2 # v4.38.2
|
||||
with:
|
||||
sarif_file: results.sarif
|
||||
+2
-1
@@ -178,7 +178,8 @@ function omz_urlencode() {
|
||||
setopt norematchpcre
|
||||
|
||||
local -a opts
|
||||
zparseopts -D -E -a opts r m P
|
||||
# Quote the specs so global aliases (e.g. common-aliases' P) don't expand here
|
||||
zparseopts -D -E -a opts 'r' 'm' 'P'
|
||||
|
||||
local in_str="$@"
|
||||
local url_str=""
|
||||
|
||||
+82
-2
@@ -131,9 +131,89 @@ if [[ -z "$ZSH_COMPDUMP" ]]; then
|
||||
ZSH_COMPDUMP="${ZDOTDIR:-$HOME}/.zcompdump-${SHORT_HOST}-${ZSH_VERSION}"
|
||||
fi
|
||||
|
||||
# Construct zcompdump OMZ metadata
|
||||
zcompdump_revision="#omz revision: $(builtin cd -q "$ZSH"; git rev-parse HEAD 2>/dev/null)"
|
||||
# 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
|
||||
[[ "$head" = "gitdir: "* ]] || return 1
|
||||
gitdir="${head#gitdir: }"
|
||||
[[ -n "$gitdir" ]] || return 1
|
||||
[[ "$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
|
||||
|
||||
if [[ "$head" = ref:\ * ]]; then
|
||||
ref="${head#ref: }"
|
||||
|
||||
# Only use well-formed full ref names as paths. Besides matching Git's ref
|
||||
# rules, this prevents a malformed HEAD from escaping the git directory.
|
||||
[[ "$ref" = refs/?* \
|
||||
&& "$ref" != *..* \
|
||||
&& "$ref" != *//* \
|
||||
&& "$ref" != */ \
|
||||
&& "$ref" != */.* \
|
||||
&& "$ref" != *.lock \
|
||||
&& "$ref" != *.lock/* \
|
||||
&& "$ref" != *. \
|
||||
&& "$ref" != *'@{'* \
|
||||
&& "$ref" != *[[:cntrl:]\ \~\^\:\?\*\[\\]* \
|
||||
]] || return 1
|
||||
|
||||
case "$ref" in
|
||||
# These namespaces are private to each worktree and are never resolved
|
||||
# from the common directory or its packed-refs file.
|
||||
refs/bisect/*|refs/worktree/*|refs/rewritten/*)
|
||||
[[ -r "$gitdir/$ref" ]] || return 1
|
||||
read -r REPLY 2>/dev/null < "$gitdir/$ref" || return 1
|
||||
;;
|
||||
*)
|
||||
if [[ -r "$common/$ref" ]]; then
|
||||
read -r REPLY 2>/dev/null < "$common/$ref" || return 1
|
||||
elif [[ -r "$common/packed-refs" ]]; then
|
||||
lines=("${(@f)$(<"$common/packed-refs")}")
|
||||
REPLY="${lines[(r)* ${(b)ref}]%% *}"
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
else
|
||||
# detached HEAD: the file holds the commit itself
|
||||
REPLY="$head"
|
||||
fi
|
||||
|
||||
# only an object ID is a usable answer: a symbolic ref, a malformed file or
|
||||
# a missed packed entry all fall through to the git fallback instead
|
||||
[[ -n "$REPLY" && -z "${REPLY//[0-9a-f]/}" ]] \
|
||||
&& (( ${#REPLY} == 40 || ${#REPLY} == 64 ))
|
||||
}
|
||||
|
||||
# Construct zcompdump OMZ metadata. The helper reports through $REPLY, so
|
||||
# call it in a scope that keeps that out of the global namespace.
|
||||
() {
|
||||
local REPLY
|
||||
_omz_git_head || REPLY="$(builtin cd -q "$ZSH"; git rev-parse HEAD 2>/dev/null)"
|
||||
typeset -g zcompdump_revision="#omz revision: $REPLY"
|
||||
}
|
||||
zcompdump_fpath="#omz fpath: $fpath"
|
||||
unset -f _omz_git_head
|
||||
|
||||
# Check whether the zcompdump file carries the current OMZ metadata lines
|
||||
_omz_compdump_has_metadata() {
|
||||
|
||||
@@ -11,8 +11,8 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_op"
|
||||
zf_mv -f -- =( op completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._op"
|
||||
zf_mv -f -- =( op completion zsh ) "$ZSH_CACHE_DIR/completions/_op"
|
||||
} &|
|
||||
|
||||
# Load opswd function
|
||||
|
||||
@@ -13,6 +13,6 @@ fi
|
||||
# Generate and load arduino-cli completion
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_arduino-cli"
|
||||
zf_mv -f -- =( arduino-cli completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._arduino-cli"
|
||||
zf_mv -f -- =( arduino-cli completion zsh ) "$ZSH_CACHE_DIR/completions/_arduino-cli"
|
||||
} &|
|
||||
@@ -13,6 +13,6 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_argocd"
|
||||
zf_mv -f -- =( argocd completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._argocd"
|
||||
zf_mv -f -- =( argocd completion zsh ) "$ZSH_CACHE_DIR/completions/_argocd"
|
||||
} &|
|
||||
@@ -14,6 +14,6 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_asdf" ]]; then
|
||||
fi
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_asdf"
|
||||
zf_mv -f -- =( asdf completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._asdf"
|
||||
zf_mv -f -- =( asdf completion zsh ) "$ZSH_CACHE_DIR/completions/_asdf"
|
||||
} &|
|
||||
@@ -13,6 +13,6 @@ fi
|
||||
# Generate and load buf completion
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_buf"
|
||||
zf_mv -f -- =( buf completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._buf"
|
||||
zf_mv -f -- =( buf completion zsh ) "$ZSH_CACHE_DIR/completions/_buf"
|
||||
} &|
|
||||
@@ -13,6 +13,6 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_bun"
|
||||
zf_mv -f -- =( SHELL=zsh bun completions ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._bun"
|
||||
zf_mv -f -- =( SHELL=zsh bun completions ) "$ZSH_CACHE_DIR/completions/_bun"
|
||||
} &|
|
||||
@@ -13,6 +13,6 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_charm"
|
||||
zf_mv -f -- =( charm completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._charm"
|
||||
zf_mv -f -- =( charm completion zsh ) "$ZSH_CACHE_DIR/completions/_charm"
|
||||
} &|
|
||||
@@ -13,6 +13,6 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_chezmoi"
|
||||
zf_mv -f -- =( chezmoi completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._chezmoi"
|
||||
zf_mv -f -- =( chezmoi completion zsh ) "$ZSH_CACHE_DIR/completions/_chezmoi"
|
||||
} &|
|
||||
@@ -13,6 +13,6 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_codex"
|
||||
zf_mv -f -- =( codex completion zsh < /dev/null 2> /dev/null ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._codex"
|
||||
zf_mv -f -- =( codex completion zsh < /dev/null 2> /dev/null ) "$ZSH_CACHE_DIR/completions/_codex"
|
||||
} &|
|
||||
@@ -27,6 +27,6 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_deno"
|
||||
zf_mv -f -- =( deno completions zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._deno"
|
||||
zf_mv -f -- =( deno completions zsh ) "$ZSH_CACHE_DIR/completions/_deno"
|
||||
} &|
|
||||
@@ -17,7 +17,7 @@ plugins=(... docker-compose)
|
||||
|-----------|----------------------------------|----------------------------------------------------------------------------------|
|
||||
| dco | `docker-compose` | Docker-compose main command |
|
||||
| dcb | `docker-compose build` | Build containers |
|
||||
| dcc | `docker-compose config` | Parse, resolve and render compose file in canonical format |
|
||||
| dcc | `docker-compose config` | Parse, resolve and render compose file in canonical format |
|
||||
| dce | `docker-compose exec` | Execute command inside a container |
|
||||
| dcps | `docker-compose ps` | List containers |
|
||||
| dcrestart | `docker-compose restart` | Restart container |
|
||||
@@ -35,3 +35,6 @@ plugins=(... docker-compose)
|
||||
| dcpull | `docker-compose pull` | Pull image of a service |
|
||||
| dcstart | `docker-compose start` | Start a container |
|
||||
| dck | `docker-compose kill` | Kills containers |
|
||||
| dcv | `docker-compose version` | Show version information |
|
||||
| dcsts | `docker-compose stats` | Show stats of containers |
|
||||
| dci | `docker-compose images` | List images |
|
||||
@@ -24,5 +24,8 @@ alias dclF="$dccmd logs -f --tail 0"
|
||||
alias dcpull="$dccmd pull"
|
||||
alias dcstart="$dccmd start"
|
||||
alias dck="$dccmd kill"
|
||||
alias dcv="$dccmd version"
|
||||
alias dcsts="$dccmd stats"
|
||||
alias dci="$dccmd images"
|
||||
|
||||
unset dccmd
|
||||
@@ -68,7 +68,7 @@ zmodload -F zsh/files b:zf_mv
|
||||
! is-at-least 23.0.0 ${${(s:,:z)"$(command docker --version)"}[3]}; then
|
||||
command cp "${plugin_dir}/completions/_docker" "$ZSH_CACHE_DIR/completions/_docker"
|
||||
else
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_docker"
|
||||
zf_mv -f -- =( command docker completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._docker"
|
||||
zf_mv -f -- =( command docker completion zsh ) "$ZSH_CACHE_DIR/completions/_docker"
|
||||
fi
|
||||
} "${0:A:h}" &|
|
||||
@@ -16,6 +16,6 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_doctl"
|
||||
zf_mv -f -- =( doctl completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._doctl"
|
||||
zf_mv -f -- =( doctl completion zsh ) "$ZSH_CACHE_DIR/completions/_doctl"
|
||||
} &|
|
||||
@@ -35,7 +35,8 @@ alias eeval="$EMACS_PLUGIN_LAUNCHER --eval"
|
||||
alias eframe='emacsclient --alternate-editor="" --create-frame'
|
||||
|
||||
# Emacs ANSI Term tracking
|
||||
if [[ -n "$INSIDE_EMACS" ]] && [[ "$INSIDE_EMACS" != "vterm" ]]; then
|
||||
local excluded_terms=(vterm ghostel)
|
||||
if [[ -n "$INSIDE_EMACS" ]] && (( ! ${excluded_terms[(Ie)${INSIDE_EMACS%%,*}]} )); then
|
||||
chpwd_emacs() { print -P "\033AnSiTc %d"; }
|
||||
print -P "\033AnSiTc %d" # Track current working directory
|
||||
print -P "\033AnSiTu %n" # Track username
|
||||
|
||||
@@ -32,8 +32,9 @@ emacsfun() {
|
||||
# Check if there are suitable frames
|
||||
frames="$(emacsclient -a '' -n -e "$cmd" 2>/dev/null |sed 's/.*\x07//g' )"
|
||||
|
||||
# Only create another X frame if there isn't one present
|
||||
if [ -z "$frames" -o "$frames" = nil ]; then
|
||||
# A bare emacs/e passes only --no-wait, so it still needs --create-frame.
|
||||
if [ -z "$frames" ] || [ "$frames" = nil ] || [ "$#" -eq 0 ] \
|
||||
|| { [ "$#" -eq 1 ] && [ "$1" = --no-wait ]; }; then
|
||||
emacsclient --alternate-editor="" --create-frame "$@"
|
||||
return $?
|
||||
fi
|
||||
|
||||
@@ -119,7 +119,17 @@ EOF
|
||||
fi ;;
|
||||
(*.rpm)
|
||||
rpm2cpio "$full_path" | cpio --quiet -id ;;
|
||||
(*.7z | *.7z.[0-9]* | *.pk7) 7za x "$full_path" ;;
|
||||
(*.7z | *.7z.[0-9]* | *.pk7)
|
||||
if (( $+commands[7zz] )); then
|
||||
7zz x "$full_path"
|
||||
elif (( $+commands[7z] )); then
|
||||
7z x "$full_path"
|
||||
elif (( $+commands[7za] )); then
|
||||
7za x "$full_path"
|
||||
else
|
||||
echo "extract: cannot extract 7z files: install 7zz, 7z or 7za" >&2
|
||||
success=1
|
||||
fi ;;
|
||||
(*.deb)
|
||||
command mkdir -p "control" "data"
|
||||
ar vx "$full_path" > /dev/null
|
||||
|
||||
@@ -45,6 +45,36 @@ If `yes`, always add `-h` flag to add a header row for each column.
|
||||
|
||||
Default: `no`
|
||||
|
||||
### `links`
|
||||
|
||||
```zsh
|
||||
zstyle ':omz:plugins:eza' 'links' yes|no
|
||||
```
|
||||
|
||||
If `yes`, always add `-H` flag to show hard links for each file.
|
||||
|
||||
Default: `no`
|
||||
|
||||
### `octal`
|
||||
|
||||
```zsh
|
||||
zstyle ':omz:plugins:eza' 'octal' yes|no
|
||||
```
|
||||
|
||||
If `yes`, always add `-o` flag to show file permissions as octal numbers.
|
||||
|
||||
Default: `no`
|
||||
|
||||
### `inodes`
|
||||
|
||||
```zsh
|
||||
zstyle ':omz:plugins:eza' 'inodes' yes|no
|
||||
```
|
||||
|
||||
If `yes`, always add `-i` flag to show the inode for each file.
|
||||
|
||||
Default: `no`
|
||||
|
||||
### `show-group`
|
||||
|
||||
```zsh
|
||||
|
||||
@@ -21,6 +21,15 @@ function _configure_eza() {
|
||||
if zstyle -t ':omz:plugins:eza' 'header'; then
|
||||
_EZA_HEAD+=("h")
|
||||
fi
|
||||
if zstyle -t ':omz:plugins:eza' 'links'; then
|
||||
_EZA_HEAD+=("H")
|
||||
fi
|
||||
if zstyle -t ':omz:plugins:eza' 'octal'; then
|
||||
_EZA_HEAD+=("o")
|
||||
fi
|
||||
if zstyle -t ':omz:plugins:eza' 'inodes'; then
|
||||
_EZA_HEAD+=("i")
|
||||
fi
|
||||
zstyle -s ':omz:plugins:eza' 'size-prefix' _val
|
||||
case "${_val:l}" in
|
||||
binary)
|
||||
|
||||
@@ -32,6 +32,6 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_flutter"
|
||||
zf_mv -f -- =( flutter zsh-completion < /dev/null ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._flutter"
|
||||
zf_mv -f -- =( flutter zsh-completion < /dev/null ) "$ZSH_CACHE_DIR/completions/_flutter"
|
||||
} &|
|
||||
@@ -13,6 +13,6 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_flux"
|
||||
zf_mv -f -- =( flux completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._flux"
|
||||
zf_mv -f -- =( flux completion zsh ) "$ZSH_CACHE_DIR/completions/_flux"
|
||||
} &|
|
||||
@@ -12,8 +12,8 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_fnm"
|
||||
zf_mv -f -- =( fnm completions --shell=zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._fnm"
|
||||
zf_mv -f -- =( fnm completions --shell=zsh ) "$ZSH_CACHE_DIR/completions/_fnm"
|
||||
} &|
|
||||
|
||||
if zstyle -t ':omz:plugins:fnm' autostart; then
|
||||
|
||||
@@ -57,7 +57,7 @@ function frontend() {
|
||||
codepen 'https://codepen.io/search/pens?q='
|
||||
compassdoc 'http://compass-style.org/search?q='
|
||||
cssflow 'http://www.cssflow.com/search?q='
|
||||
dartlang 'https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart:'
|
||||
dartlang $(_frontend_fallback 'dart.dev')
|
||||
emberjs $(_frontend_fallback 'emberjs.com/')
|
||||
flowtype $(_frontend_fallback 'flow.org/en/docs/')
|
||||
fontello 'http://fontello.com/#search='
|
||||
|
||||
@@ -13,6 +13,6 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_gcx"
|
||||
zf_mv -f -- =( gcx completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._gcx"
|
||||
zf_mv -f -- =( gcx completion zsh ) "$ZSH_CACHE_DIR/completions/_gcx"
|
||||
} &|
|
||||
@@ -17,7 +17,4 @@ plugin is loaded, which is usually when you start up a new terminal emulator.
|
||||
|
||||
The cache is stored at:
|
||||
|
||||
- `$ZSH/plugins/gh/_gh` completions script
|
||||
|
||||
- `$ZSH_CACHE_DIR/gh_version` version of GitHub CLI, used to invalidate
|
||||
the cache.
|
||||
- `$ZSH_CACHE_DIR/completions/_gh` completions script
|
||||
@@ -13,6 +13,6 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_gh"
|
||||
zf_mv -f -- =( gh completion --shell zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._gh"
|
||||
zf_mv -f -- =( gh completion --shell zsh ) "$ZSH_CACHE_DIR/completions/_gh"
|
||||
} &|
|
||||
@@ -108,6 +108,7 @@ plugins=(... git)
|
||||
| `glo` | `git log --oneline --decorate` |
|
||||
| `glog` | `git log --oneline --decorate --graph` |
|
||||
| `gloga` | `git log --oneline --decorate --graph --all` |
|
||||
| `glom` | `git log --oneline --decorate --color $(git_main_branch)..` |
|
||||
| `glp` | `git log --pretty=<format>` |
|
||||
| `glg` | `git log --stat` |
|
||||
| `glgp` | `git log --stat --patch` |
|
||||
@@ -155,6 +156,8 @@ plugins=(... git)
|
||||
| `grba` | `git rebase --abort` |
|
||||
| `grbc` | `git rebase --continue` |
|
||||
| `grbi` | `git rebase --interactive` |
|
||||
| `grbmi` | `git rebase $(git_main_branch) --interactive` |
|
||||
| `grbmia` | `git rebase $(git_main_branch) --interactive --autosquash` |
|
||||
| `grbo` | `git rebase --onto` |
|
||||
| `grbs` | `git rebase --skip` |
|
||||
| `grbd` | `git rebase $(git_develop_branch)` |
|
||||
@@ -202,8 +205,10 @@ plugins=(... git)
|
||||
| `gst` | `git status` |
|
||||
| `gss` | `git status --short` |
|
||||
| `gsb` | `git status --short -b` |
|
||||
| `gsnut` | `git status --untracked-files=no` |
|
||||
| `gsi` | `git submodule init` |
|
||||
| `gsu` | `git submodule update` |
|
||||
| `gsuri` | `git submodule update --recursive --init` |
|
||||
| `gsd` | `git svn dcommit` |
|
||||
| `git-svn-dcommit-push` | `git svn dcommit && git push github $(git_main_branch):svntrunk` |
|
||||
| `gsr` | `git svn rebase` |
|
||||
|
||||
@@ -253,6 +253,7 @@ alias glolm='git log $(git_main_branch) --graph --pretty="%Cred%h%Creset -%C(aut
|
||||
alias glo='git log --oneline --decorate'
|
||||
alias glog='git log --oneline --decorate --graph'
|
||||
alias gloga='git log --oneline --decorate --graph --all'
|
||||
alias glom='git log --oneline --decorate --color $(git_main_branch)..'
|
||||
|
||||
# Pretty log messages
|
||||
function _git_log_prettily(){
|
||||
@@ -362,6 +363,8 @@ alias grbd='git rebase $(git_develop_branch)'
|
||||
alias grbm='git rebase $(git_main_branch)'
|
||||
alias grbom='git rebase origin/$(git_main_branch)'
|
||||
alias grbum='git rebase upstream/$(git_main_branch)'
|
||||
alias grbmi='git rebase $(git_main_branch) --interactive'
|
||||
alias grbmia='git rebase $(git_main_branch) --interactive --autosquash'
|
||||
alias grf='git reflog'
|
||||
alias gr='git remote'
|
||||
alias grv='git remote --verbose'
|
||||
@@ -404,8 +407,10 @@ alias gsts='git stash show --patch'
|
||||
alias gst='git status'
|
||||
alias gss='git status --short'
|
||||
alias gsb='git status --short --branch'
|
||||
alias gsnut='git status --untracked-files=no'
|
||||
alias gsi='git submodule init'
|
||||
alias gsu='git submodule update'
|
||||
alias gsuri='git submodule update --recursive --init'
|
||||
alias gsd='git svn dcommit'
|
||||
alias git-svn-dcommit-push='git svn dcommit && git push github $(git_main_branch):svntrunk'
|
||||
alias gsr='git svn rebase'
|
||||
|
||||
+34
-36
@@ -1,45 +1,43 @@
|
||||
# github plugin
|
||||
|
||||
This plugin supports working with GitHub from the command line. It provides a few things:
|
||||
> [!WARNING]
|
||||
> This plugin is deprecated and will be removed in a future release. It supports
|
||||
> the legacy [`hub`](https://github.com/mislav/hub) CLI, not the current GitHub
|
||||
> CLI. For `gh` completion, use the [`gh` plugin](../gh) instead.
|
||||
|
||||
* Sets up the `hub` wrapper and completions for the `git` command if you have [`hub`](https://github.com/github/hub) installed.
|
||||
* Completion for the [`github` Ruby gem](https://github.com/defunkt/github-gem).
|
||||
* Convenience functions for working with repos and URLs.
|
||||
The plugin provides compatibility for existing `hub` users by:
|
||||
|
||||
### Functions
|
||||
- aliasing `git` to `hub` when `hub` is installed;
|
||||
- adding completion for `hub`; and
|
||||
- defining convenience functions for creating repositories.
|
||||
|
||||
* `empty_gh` - Creates a new empty repo (with a `README.md`) and pushes it to GitHub
|
||||
* `new_gh` - Initializes an existing directory as a repo and pushes it to GitHub
|
||||
* `exist_gh` - Takes an existing repo and pushes it to GitHub
|
||||
## Migrating to GitHub CLI
|
||||
|
||||
|
||||
## Installation
|
||||
|
||||
[Hub](https://github.com/github/hub) needs to be installed if you want to use it. On OS X with Homebrew, this can be done with `brew install hub`. The `hub` completion definition needs to be added to your `$FPATH` before initializing OMZ.
|
||||
|
||||
The [`github` Ruby gem](https://github.com/defunkt/github-gem) needs to be installed if you want to use it.
|
||||
|
||||
### Configuration
|
||||
|
||||
These settings affect `github`'s behavior.
|
||||
|
||||
#### Environment variables
|
||||
|
||||
* `$GITHUB_USER`
|
||||
* `$GITHUB_PASSWORD`
|
||||
|
||||
#### Git configuration options
|
||||
|
||||
* `github.user` - GitHub username for repo operations
|
||||
|
||||
See `man hub` for more details.
|
||||
|
||||
### Homebrew installation note
|
||||
|
||||
If you have installed `hub` using Homebrew, its completions may not be on your `$FPATH` if you are using the system `zsh`. Homebrew installs `zsh` completion definitions to `/usr/local/share/zsh/site-functions`, which will be on `$FPATH` for the Homebrew-installed `zsh`, but not for the system `zsh`. If you want it to work with the system `zsh`, add this to your `~/.zshrc` before it sources `oh-my-zsh.sh`.
|
||||
Install [GitHub CLI](https://cli.github.com/), replace `github` with `gh` in
|
||||
your plugin list, and restart your shell:
|
||||
|
||||
```zsh
|
||||
if (( ! ${fpath[(I)/usr/local/share/zsh/site-functions]} )); then
|
||||
FPATH=/usr/local/share/zsh/site-functions:$FPATH
|
||||
fi
|
||||
plugins=(... gh)
|
||||
```
|
||||
|
||||
The `gh` plugin supplies completion for the installed GitHub CLI. It does not
|
||||
alias `git`, because `gh` is not a Git wrapper.
|
||||
|
||||
The closest replacement for creating a GitHub repository from an existing
|
||||
local repository is:
|
||||
|
||||
```zsh
|
||||
gh repo create --source=. --push
|
||||
```
|
||||
|
||||
## Deprecated functions
|
||||
|
||||
- `empty_gh` - creates a new repository with a `README.md` and pushes it to GitHub
|
||||
- `new_gh` - initializes an existing directory and pushes it to GitHub
|
||||
- `exist_gh` - pushes an existing Git repository to GitHub
|
||||
|
||||
These functions remain available during the deprecation period and require
|
||||
`hub`. They will be removed with the plugin.
|
||||
|
||||
If you continue using `hub`, see its documentation for authentication and
|
||||
configuration details.
|
||||
@@ -1,3 +1,6 @@
|
||||
print -Pru2 -- '%F{yellow}[oh-my-zsh] The %Bgithub%b plugin is deprecated and will be removed in a future release.'
|
||||
print -Pru2 -- 'It supports the legacy %Bhub%b CLI. Use the %Bgh%b plugin for GitHub CLI completion.%f'
|
||||
|
||||
# Set up hub wrapper for git, if it is available; https://github.com/github/hub
|
||||
if (( $+commands[hub] )); then
|
||||
alias git=hub
|
||||
@@ -26,7 +29,7 @@ empty_gh() { # [NAME_OF_REPO]
|
||||
# This function will add all non-hidden files to git.
|
||||
new_gh() { # [DIRECTORY]
|
||||
emulate -L zsh
|
||||
local repo="$1"
|
||||
local repo="${1-.}"
|
||||
cd "$repo" \
|
||||
|| return
|
||||
|
||||
@@ -42,7 +45,7 @@ new_gh() { # [DIRECTORY]
|
||||
|| return
|
||||
hub create \
|
||||
|| return
|
||||
git push -u origin master \
|
||||
git push -u origin HEAD \
|
||||
|| return
|
||||
}
|
||||
|
||||
@@ -52,18 +55,19 @@ new_gh() { # [DIRECTORY]
|
||||
# to your GitHub.
|
||||
exist_gh() { # [DIRECTORY]
|
||||
emulate -L zsh
|
||||
local repo=$1
|
||||
cd "$repo"
|
||||
local repo="${1:-.}"
|
||||
cd "$repo" \
|
||||
|| return
|
||||
|
||||
hub create \
|
||||
|| return
|
||||
git push -u origin master
|
||||
git push -u origin HEAD
|
||||
}
|
||||
|
||||
# git.io "GitHub URL"
|
||||
#
|
||||
# Shorten GitHub url, example:
|
||||
# https://github.com/nvogel/dotzsh > https://git.io/8nU25w
|
||||
# https://github.com/nvogel/dotzsh > https://git.io/8nU25w
|
||||
# source: https://github.com/nvogel/dotzsh
|
||||
# documentation: https://github.com/blog/985-git-io-github-url-shortener
|
||||
#
|
||||
@@ -74,4 +78,3 @@ git.io() {
|
||||
}
|
||||
|
||||
# End Functions #############################################################
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
# GitLab CLI plugin
|
||||
|
||||
This plugin adds completion for the [GitLab CLI](https://docs.gitlab.com/cli/).
|
||||
|
||||
To use it, add `glab` to the plugins array in your zshrc file:
|
||||
|
||||
```zsh
|
||||
plugins=(... glab)
|
||||
```
|
||||
|
||||
This plugin does not add any aliases.
|
||||
|
||||
## Cache
|
||||
|
||||
This plugin caches the completion script at `$ZSH_CACHE_DIR/completions/_glab`.
|
||||
|
||||
The cache is regenerated in the background whenever the plugin is loaded, which
|
||||
usually happens when you start a new Zsh session.
|
||||
@@ -0,0 +1,18 @@
|
||||
# Autocompletion for the GitLab CLI (glab).
|
||||
if (( ! $+commands[glab] )); then
|
||||
return
|
||||
fi
|
||||
|
||||
# If the completion file doesn't exist yet, we need to autoload it and
|
||||
# bind it to `glab`. Otherwise, compinit will have already done that.
|
||||
if [[ ! -f "$ZSH_CACHE_DIR/completions/_glab" ]]; then
|
||||
typeset -g -A _comps
|
||||
autoload -Uz _glab
|
||||
_comps[glab]=_glab
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._glab"
|
||||
zf_mv -f -- =( glab completion -s zsh ) "$ZSH_CACHE_DIR/completions/_glab"
|
||||
} &|
|
||||
@@ -267,6 +267,7 @@ __gradle_subcommand() {
|
||||
'-Dorg.gradle.configuration-cache.problems=[Configures how the configuration cache handles problems (fail or warn). Supported values are 'warn', or 'fail' (default).]:org.gradle.configuration cache.problems:(fail warn)' \
|
||||
'-Dorg.gradle.configuration-cache.read-only=[]' \
|
||||
'-Dorg.gradle.configuration-cache.unsafe.ignore.unsupported-build-events-listeners=[]' \
|
||||
'-Dorg.gradle.configuration-cache.unsafe.skip-task-logging-listeners-serialization=[]' \
|
||||
'-Dorg.gradle.configuration-cache=[Enables the configuration cache. Gradle will try to reuse the build configuration from previous builds.]' \
|
||||
'-Dorg.gradle.configureondemand=[Configures necessary projects only. Gradle will attempt to reduce configuration time for large multi-project builds.]' \
|
||||
'-Dorg.gradle.console.interactive=[]' \
|
||||
@@ -296,6 +297,7 @@ __gradle_subcommand() {
|
||||
'-Dorg.gradle.jvmargs=[]' \
|
||||
'-Dorg.gradle.logging.level=[]:org.gradle.logging.level:(quiet warn info debug)' \
|
||||
'-Dorg.gradle.logging.stacktrace=[]' \
|
||||
'-Dorg.gradle.mirror.maven.settings=[]' \
|
||||
'-Dorg.gradle.native=[]' \
|
||||
'-Dorg.gradle.parallel=[Builds projects in parallel. Gradle will attempt to determine the optimal number of executor threads to use.]:org.gradle.parallel:(true false)' \
|
||||
'-Dorg.gradle.priority=[Specifies the scheduling priority for the Gradle daemon and all processes launched by it. Supported values are 'normal' (default) or 'low'.]:org.gradle.priority:(normal low)' \
|
||||
@@ -407,6 +409,7 @@ _gradle() {
|
||||
'-Dorg.gradle.configuration-cache.problems=[Configures how the configuration cache handles problems (fail or warn). Supported values are 'warn', or 'fail' (default).]:org.gradle.configuration cache.problems:(fail warn):->argument-expected' \
|
||||
'-Dorg.gradle.configuration-cache.read-only=[]:->argument-expected' \
|
||||
'-Dorg.gradle.configuration-cache.unsafe.ignore.unsupported-build-events-listeners=[]:->argument-expected' \
|
||||
'-Dorg.gradle.configuration-cache.unsafe.skip-task-logging-listeners-serialization=[]:->argument-expected' \
|
||||
'-Dorg.gradle.configuration-cache=[Enables the configuration cache. Gradle will try to reuse the build configuration from previous builds.]:->argument-expected' \
|
||||
'-Dorg.gradle.configureondemand=[Configures necessary projects only. Gradle will attempt to reduce configuration time for large multi-project builds.]:->argument-expected' \
|
||||
'-Dorg.gradle.console.interactive=[]:->argument-expected' \
|
||||
@@ -436,6 +439,7 @@ _gradle() {
|
||||
'-Dorg.gradle.jvmargs=[]:->argument-expected' \
|
||||
'-Dorg.gradle.logging.level=[]:org.gradle.logging.level:(quiet warn info debug):->argument-expected' \
|
||||
'-Dorg.gradle.logging.stacktrace=[]:->argument-expected' \
|
||||
'-Dorg.gradle.mirror.maven.settings=[]:->argument-expected' \
|
||||
'-Dorg.gradle.native=[]:->argument-expected' \
|
||||
'-Dorg.gradle.parallel=[Builds projects in parallel. Gradle will attempt to determine the optimal number of executor threads to use.]:org.gradle.parallel:(true false):->argument-expected' \
|
||||
'-Dorg.gradle.priority=[Specifies the scheduling priority for the Gradle daemon and all processes launched by it. Supported values are 'normal' (default) or 'low'.]:org.gradle.priority:(normal low):->argument-expected' \
|
||||
|
||||
@@ -15,7 +15,6 @@ function gradle-or-gradlew() {
|
||||
|
||||
# if gradlew found, run it instead of gradle
|
||||
if [[ -f "$project_root/gradlew" ]]; then
|
||||
echo "executing gradlew instead of gradle"
|
||||
"$project_root/gradlew" "$@"
|
||||
else
|
||||
command gradle "$@"
|
||||
|
||||
@@ -11,7 +11,7 @@ else
|
||||
source "$ZSH_CACHE_DIR/completions/_hasura"
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_hasura"
|
||||
zf_mv -f -- =( hasura completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._hasura"
|
||||
zf_mv -f -- =( hasura completion zsh ) "$ZSH_CACHE_DIR/completions/_hasura"
|
||||
} &|
|
||||
fi
|
||||
@@ -15,8 +15,8 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_hcloud"
|
||||
zf_mv -f -- =( hcloud completion zsh 2> /dev/null ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._hcloud"
|
||||
zf_mv -f -- =( hcloud completion zsh 2> /dev/null ) "$ZSH_CACHE_DIR/completions/_hcloud"
|
||||
} &|
|
||||
|
||||
# Main alias
|
||||
|
||||
@@ -11,8 +11,8 @@ else
|
||||
source "$ZSH_CACHE_DIR/completions/_helm"
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_helm"
|
||||
zf_mv -f -- =( helm completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._helm"
|
||||
zf_mv -f -- =( helm completion zsh ) "$ZSH_CACHE_DIR/completions/_helm"
|
||||
} &|
|
||||
fi
|
||||
|
||||
|
||||
@@ -63,6 +63,6 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_herdr"
|
||||
zf_mv -f -- =( herdr completion zsh < /dev/null 2> /dev/null ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._herdr"
|
||||
zf_mv -f -- =( herdr completion zsh < /dev/null 2> /dev/null ) "$ZSH_CACHE_DIR/completions/_herdr"
|
||||
} &|
|
||||
@@ -0,0 +1,28 @@
|
||||
# hermes plugin
|
||||
|
||||
This plugin adds completions for the Hermes AI agent.
|
||||
|
||||
To use it, add `hermes` to the plugin array in your zshrc file:
|
||||
|
||||
```zsh
|
||||
plugins=(... hermes)
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```zsh
|
||||
hermes <TAB>
|
||||
```
|
||||
|
||||
## Common Workflows
|
||||
|
||||
```zsh
|
||||
# First time setup/updating overall config
|
||||
hermes setup
|
||||
|
||||
# Starting the tui chat
|
||||
hermes
|
||||
|
||||
# Changing default model
|
||||
hermes model
|
||||
```
|
||||
@@ -0,0 +1,15 @@
|
||||
if (( ! $+commands[hermes] )); then
|
||||
return
|
||||
fi
|
||||
|
||||
if [[ ! -f "$ZSH_CACHE_DIR/completions/_hermes" ]]; then
|
||||
typeset -g -A _comps
|
||||
autoload -Uz _hermes
|
||||
_comps[hermes]=_hermes
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._hermes"
|
||||
zf_mv -f -- =( hermes completion zsh < /dev/null 2> /dev/null ) "$ZSH_CACHE_DIR/completions/_hermes"
|
||||
} &|
|
||||
@@ -20,7 +20,7 @@ Requirements
|
||||
Install
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
Using the [Homebrew](https://brew.sh) package manager:
|
||||
Using the [Homebrew]( https://brew.sh ) package manager:
|
||||
|
||||
brew install zsh-history-substring-search
|
||||
echo 'source $(brew --prefix)/share/zsh-history-substring-search/zsh-history-substring-search.zsh' >> ~/.zshrc
|
||||
@@ -51,7 +51,7 @@ Using [zplug](https://github.com/zplug/zplug):
|
||||
|
||||
1. Add this repo to `~/.zshrc`:
|
||||
|
||||
zplug "zsh-users/zsh-history-substring-search", as: plugin
|
||||
zplug "zsh-users/zsh-history-substring-search", as:plugin
|
||||
|
||||
Using [antigen](https://github.com/zsh-users/antigen):
|
||||
|
||||
@@ -75,7 +75,7 @@ Using [Zinit](https://github.com/zdharma-continuum/zinit):
|
||||
|
||||
1. Use the `Oh-my-zsh` Zinit snippet in `~/.zshrc`:
|
||||
|
||||
zinit snippet OMZ::plugins/git/git.plugin.zsh`
|
||||
zinit snippet OMZ::plugins/git/git.plugin.zsh
|
||||
|
||||
2. Load the plugin in `~/.zshrc`:
|
||||
|
||||
|
||||
@@ -295,8 +295,8 @@ _history-substring-search-begin() {
|
||||
fi
|
||||
|
||||
#
|
||||
# Escape and join query parts with wildcard character '*' as separator
|
||||
# `(j:CHAR:)` join array to string with CHAR as separator
|
||||
# Escape and join query parts with wildcard character '*' as seperator
|
||||
# `(j:CHAR:)` join array to string with CHAR as seperator
|
||||
#
|
||||
local search_pattern="${(j:*:)_history_substring_search_query_parts[@]//(#m)[\][()|\\*?#<>~^]/\\$MATCH}*"
|
||||
|
||||
|
||||
@@ -13,8 +13,8 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_jj"
|
||||
zf_mv -f -- =( COMPLETE=zsh jj ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._jj"
|
||||
zf_mv -f -- =( COMPLETE=zsh jj ) "$ZSH_CACHE_DIR/completions/_jj"
|
||||
} &|
|
||||
|
||||
function __jj_prompt_jj() {
|
||||
|
||||
@@ -13,6 +13,6 @@ fi
|
||||
# the actual completion file will be loaded.
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_k9s"
|
||||
zf_mv -f -- =( k9s completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._k9s"
|
||||
zf_mv -f -- =( k9s completion zsh ) "$ZSH_CACHE_DIR/completions/_k9s"
|
||||
} &|
|
||||
@@ -13,8 +13,8 @@ fi
|
||||
# Generate and load kind completion
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_kind"
|
||||
zf_mv -f -- =( kind completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._kind"
|
||||
zf_mv -f -- =( kind completion zsh ) "$ZSH_CACHE_DIR/completions/_kind"
|
||||
} &|
|
||||
|
||||
# Register aliases
|
||||
|
||||
@@ -39,6 +39,7 @@ KUBE_PS1_HIDE_IF_NOCONTEXT="${KUBE_PS1_HIDE_IF_NOCONTEXT:-false}"
|
||||
_KUBE_PS1_KUBECONFIG_CACHE="${KUBECONFIG}"
|
||||
_KUBE_PS1_DISABLE_PATH="${HOME}/.kube/kube-ps1/disabled"
|
||||
_KUBE_PS1_LAST_TIME=0
|
||||
_KUBE_PS1_HAS_CONTEXT=false
|
||||
|
||||
# Determine our shell
|
||||
_kube_ps1_shell_type() {
|
||||
@@ -264,15 +265,21 @@ _kube_ps1_prompt_update() {
|
||||
[[ "${KUBE_PS1_ENABLED}" == "off" ]] && return $return_code
|
||||
|
||||
if ! _kube_ps1_binary_check "${KUBE_PS1_BINARY}"; then
|
||||
# No ability to fetch context/namespace; display N/A.
|
||||
# Unable to determine context availability; preserve the existing
|
||||
# BINARY-N/A prompt instead of treating it as no context.
|
||||
KUBE_PS1_CONTEXT="BINARY-N/A"
|
||||
KUBE_PS1_NAMESPACE="N/A"
|
||||
unset _KUBE_PS1_HAS_CONTEXT
|
||||
# Refresh when the binary becomes available again.
|
||||
_KUBE_PS1_LAST_TIME=0
|
||||
return $return_code
|
||||
fi
|
||||
|
||||
if [[ "${KUBECONFIG}" != "${_KUBE_PS1_KUBECONFIG_CACHE}" ]]; then
|
||||
# User changed KUBECONFIG; unconditionally refetch.
|
||||
_KUBE_PS1_KUBECONFIG_CACHE=${KUBECONFIG}
|
||||
if [[ "${_KUBE_PS1_LAST_TIME}" == 0 ]] ||
|
||||
[[ "${KUBECONFIG}" != "${_KUBE_PS1_KUBECONFIG_CACHE}" ]]; then
|
||||
# Fetch initially, even if no config file exists, and whenever the
|
||||
# user changes KUBECONFIG.
|
||||
_KUBE_PS1_KUBECONFIG_CACHE="${KUBECONFIG}"
|
||||
_kube_ps1_get_context_ns
|
||||
return $return_code
|
||||
fi
|
||||
@@ -300,13 +307,30 @@ _kube_ps1_prompt_update() {
|
||||
}
|
||||
|
||||
_kube_ps1_get_context() {
|
||||
if [[ "${KUBE_PS1_CONTEXT_ENABLE}" == true ]]; then
|
||||
KUBE_PS1_CONTEXT="$(${KUBE_PS1_BINARY} config current-context 2>/dev/null)"
|
||||
KUBE_PS1_CONTEXT="${KUBE_PS1_CONTEXT:-N/A}"
|
||||
local context
|
||||
|
||||
if [[ -n "${KUBE_PS1_CLUSTER_FUNCTION}" ]]; then
|
||||
KUBE_PS1_CONTEXT="$("${KUBE_PS1_CLUSTER_FUNCTION}" "${KUBE_PS1_CONTEXT}")"
|
||||
fi
|
||||
# Context availability must be detected even when context display is
|
||||
# disabled but KUBE_PS1_HIDE_IF_NOCONTEXT is enabled.
|
||||
if [[ "${KUBE_PS1_CONTEXT_ENABLE}" != true ]] &&
|
||||
[[ "${KUBE_PS1_HIDE_IF_NOCONTEXT}" != true ]]; then
|
||||
KUBE_PS1_CONTEXT=
|
||||
return
|
||||
fi
|
||||
|
||||
context="$("${KUBE_PS1_BINARY}" config current-context 2>/dev/null)"
|
||||
|
||||
_KUBE_PS1_HAS_CONTEXT=false
|
||||
[[ -n "${context}" ]] && _KUBE_PS1_HAS_CONTEXT=true
|
||||
|
||||
if [[ "${KUBE_PS1_CONTEXT_ENABLE}" != true ]]; then
|
||||
KUBE_PS1_CONTEXT=
|
||||
return
|
||||
fi
|
||||
|
||||
KUBE_PS1_CONTEXT="${context:-N/A}"
|
||||
|
||||
if [[ -n "${KUBE_PS1_CLUSTER_FUNCTION}" ]]; then
|
||||
KUBE_PS1_CONTEXT="$("${KUBE_PS1_CLUSTER_FUNCTION}" "${KUBE_PS1_CONTEXT}")"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -325,7 +349,7 @@ _kube_ps1_get_context_ns() {
|
||||
# Set the command time
|
||||
if [[ "${_KUBE_PS1_SHELL}" == "bash" ]]; then
|
||||
if ((BASH_VERSINFO[0] > 4 || (BASH_VERSINFO[0] == 4 && BASH_VERSINFO[1] >= 2))); then
|
||||
_KUBE_PS1_LAST_TIME=$(printf '%(%s)T')
|
||||
printf -v _KUBE_PS1_LAST_TIME '%(%s)T' -1
|
||||
else
|
||||
_KUBE_PS1_LAST_TIME=$(date +%s)
|
||||
fi
|
||||
@@ -407,8 +431,11 @@ kubeoff() {
|
||||
# Build our prompt
|
||||
kube_ps1() {
|
||||
[[ "${KUBE_PS1_ENABLED}" == "off" ]] && return
|
||||
|
||||
[[ "${KUBE_PS1_HIDE_IF_NOCONTEXT}" == true ]] &&
|
||||
[[ "${_KUBE_PS1_HAS_CONTEXT}" == false ]] && return
|
||||
|
||||
[[ -z "${KUBE_PS1_CONTEXT}" ]] && [[ "${KUBE_PS1_CONTEXT_ENABLE}" == true ]] && return
|
||||
[[ "${KUBE_PS1_CONTEXT}" == "N/A" ]] && [[ ${KUBE_PS1_HIDE_IF_NOCONTEXT} == true ]] && return
|
||||
|
||||
local KUBE_PS1
|
||||
local KUBE_PS1_RESET_COLOR="${_KUBE_PS1_OPEN_ESC}${_KUBE_PS1_DEFAULT_FG}${_KUBE_PS1_CLOSE_ESC}"
|
||||
|
||||
@@ -12,8 +12,8 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_kubectl"
|
||||
zf_mv -f -- =( kubectl completion zsh 2> /dev/null ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._kubectl"
|
||||
zf_mv -f -- =( kubectl completion zsh 2> /dev/null ) "$ZSH_CACHE_DIR/completions/_kubectl"
|
||||
} &|
|
||||
|
||||
# This command is used a LOT both below and in daily life
|
||||
|
||||
@@ -12,6 +12,6 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_minikube"
|
||||
zf_mv -f -- =( minikube completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._minikube"
|
||||
zf_mv -f -- =( minikube completion zsh ) "$ZSH_CACHE_DIR/completions/_minikube"
|
||||
} &|
|
||||
@@ -21,6 +21,6 @@ fi
|
||||
# Generate and load mise completion
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_mise"
|
||||
zf_mv -f -- =( mise completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._mise"
|
||||
zf_mv -f -- =( mise completion zsh ) "$ZSH_CACHE_DIR/completions/_mise"
|
||||
} &|
|
||||
@@ -13,8 +13,8 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_molecule"
|
||||
zf_mv -f -- =( _MOLECULE_COMPLETE=zsh_source molecule ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._molecule"
|
||||
zf_mv -f -- =( _MOLECULE_COMPLETE=zsh_source molecule ) "$ZSH_CACHE_DIR/completions/_molecule"
|
||||
} &|
|
||||
|
||||
# Alias
|
||||
|
||||
@@ -13,6 +13,6 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_atlas"
|
||||
zf_mv -f -- =( atlas completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._atlas"
|
||||
zf_mv -f -- =( atlas completion zsh ) "$ZSH_CACHE_DIR/completions/_atlas"
|
||||
} &|
|
||||
@@ -9,8 +9,8 @@ if (( $+commands[nsc] )); then
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_nsc"
|
||||
zf_mv -f -- =( nsc completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._nsc"
|
||||
zf_mv -f -- =( nsc completion zsh ) "$ZSH_CACHE_DIR/completions/_nsc"
|
||||
} &|
|
||||
fi
|
||||
|
||||
@@ -25,7 +25,7 @@ if (( $+commands[nats] )); then
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_nats"
|
||||
zf_mv -f -- =( nats --completion-script-zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._nats"
|
||||
zf_mv -f -- =( nats --completion-script-zsh ) "$ZSH_CACHE_DIR/completions/_nats"
|
||||
} &|
|
||||
fi
|
||||
@@ -13,6 +13,6 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_ngrok"
|
||||
zf_mv -f -- =( ngrok completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._ngrok"
|
||||
zf_mv -f -- =( ngrok completion zsh ) "$ZSH_CACHE_DIR/completions/_ngrok"
|
||||
} &|
|
||||
@@ -19,4 +19,6 @@ Provided aliases:
|
||||
- `ot`: generates a MFA code based on the given key and copies it to the clipboard
|
||||
(on Linux it relies on xsel, on MacOS X it uses pbcopy instead).
|
||||
|
||||
The plugin uses `$HOME/.otp` to store its internal files.
|
||||
The plugin stores its internal files in `$OTP_HOME`, which can be set in your zshrc.
|
||||
If `$OTP_HOME` is not set it defaults to either `$HOME/.otp` or `$XDG_DATA_HOME/otp`,
|
||||
depending on whether `~/.otp` already exists, or whether `$XDG_DATA_HOME` is set.
|
||||
@@ -1,4 +1,10 @@
|
||||
export OTP_HOME=~/.otp
|
||||
if [[ -z "$OTP_HOME" ]]; then
|
||||
if [[ ! -d "$HOME/.otp" ]] && [[ -n "$XDG_DATA_HOME" ]]; then
|
||||
export OTP_HOME="$XDG_DATA_HOME/otp"
|
||||
else
|
||||
export OTP_HOME=~/.otp
|
||||
fi
|
||||
fi
|
||||
mkdir -p $OTP_HOME
|
||||
|
||||
function ot () {
|
||||
|
||||
@@ -13,6 +13,6 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_pass-cli"
|
||||
zf_mv -f -- =( pass-cli completions zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._pass-cli"
|
||||
zf_mv -f -- =( pass-cli completions zsh ) "$ZSH_CACHE_DIR/completions/_pass-cli"
|
||||
} &|
|
||||
@@ -45,8 +45,8 @@ else
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_pipenv"
|
||||
zf_mv -f -- =( _PIPENV_COMPLETE=zsh_source pipenv ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._pipenv"
|
||||
zf_mv -f -- =( _PIPENV_COMPLETE=zsh_source pipenv ) "$ZSH_CACHE_DIR/completions/_pipenv"
|
||||
} &|
|
||||
fi
|
||||
|
||||
|
||||
@@ -12,8 +12,8 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_podman"
|
||||
zf_mv -f -- =( podman completion zsh 2> /dev/null ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._podman"
|
||||
zf_mv -f -- =( podman completion zsh 2> /dev/null ) "$ZSH_CACHE_DIR/completions/_podman"
|
||||
} &|
|
||||
|
||||
alias pbl='podman build'
|
||||
|
||||
@@ -41,6 +41,6 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_poetry"
|
||||
zf_mv -f -- =( poetry completions zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._poetry"
|
||||
zf_mv -f -- =( poetry completions zsh ) "$ZSH_CACHE_DIR/completions/_poetry"
|
||||
} &|
|
||||
@@ -12,7 +12,7 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_procs"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._procs"
|
||||
autoload -Uz is-at-least
|
||||
local _version=$(procs --version)
|
||||
zf_mv -f -- =(
|
||||
@@ -21,5 +21,5 @@ zmodload -F zsh/files b:zf_mv
|
||||
else
|
||||
procs --completion-out zsh
|
||||
fi
|
||||
) "$TMPPREFIX"
|
||||
) "$ZSH_CACHE_DIR/completions/_procs"
|
||||
} &|
|
||||
@@ -12,8 +12,8 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_pulumi"
|
||||
zf_mv -f -- =( pulumi gen-completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._pulumi"
|
||||
zf_mv -f -- =( pulumi gen-completion zsh ) "$ZSH_CACHE_DIR/completions/_pulumi"
|
||||
} &|
|
||||
|
||||
# Aliases
|
||||
|
||||
@@ -13,6 +13,6 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_qodana"
|
||||
zf_mv -f -- =( qodana completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._qodana"
|
||||
zf_mv -f -- =( qodana completion zsh ) "$ZSH_CACHE_DIR/completions/_qodana"
|
||||
} &|
|
||||
@@ -12,8 +12,8 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_rbw"
|
||||
zf_mv -f -- =( rbw gen-completions zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._rbw"
|
||||
zf_mv -f -- =( rbw gen-completions zsh ) "$ZSH_CACHE_DIR/completions/_rbw"
|
||||
} &|
|
||||
|
||||
# rbwpw function copies the password of a service to the clipboard
|
||||
|
||||
@@ -13,6 +13,6 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_rclone"
|
||||
zf_mv -f -- =( rclone completion zsh - ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._rclone"
|
||||
zf_mv -f -- =( rclone completion zsh - ) "$ZSH_CACHE_DIR/completions/_rclone"
|
||||
} &|
|
||||
@@ -22,6 +22,6 @@ fi
|
||||
# Overwrites the file each time as completions might change with ruff versions.
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_ruff"
|
||||
zf_mv -f -- =( ruff generate-shell-completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._ruff"
|
||||
zf_mv -f -- =( ruff generate-shell-completion zsh ) "$ZSH_CACHE_DIR/completions/_ruff"
|
||||
} &|
|
||||
@@ -21,8 +21,8 @@ fi
|
||||
# Generate completion files in the background
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_rustup"
|
||||
zf_mv -f -- =( rustup completions zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._rustup"
|
||||
zf_mv -f -- =( rustup completions zsh ) "$ZSH_CACHE_DIR/completions/_rustup"
|
||||
} &|
|
||||
cat >| "$ZSH_CACHE_DIR/completions/_cargo" <<'EOF'
|
||||
#compdef cargo
|
||||
|
||||
@@ -14,8 +14,8 @@ function install_autocompletion {
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_$1"
|
||||
zf_mv -f -- =( $1 completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._$1"
|
||||
zf_mv -f -- =( $1 completion zsh ) "$ZSH_CACHE_DIR/completions/_$1"
|
||||
} "$1" &|
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,6 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_skaffold"
|
||||
zf_mv -f -- =( skaffold completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._skaffold"
|
||||
zf_mv -f -- =( skaffold completion zsh ) "$ZSH_CACHE_DIR/completions/_skaffold"
|
||||
} &|
|
||||
@@ -0,0 +1,3 @@
|
||||
## Sops Plugin
|
||||
|
||||
This plugin sets up completion for [sops](https://getsops.io).
|
||||
@@ -0,0 +1,18 @@
|
||||
# COMPLETION FUNCTION
|
||||
if (( ! $+commands[sops] )); then
|
||||
return
|
||||
fi
|
||||
|
||||
# If the completion file doesn't exist yet, we need to autoload it and
|
||||
# bind it to `sops`. Otherwise, compinit will have already done that.
|
||||
if [[ ! -f "$ZSH_CACHE_DIR/completions/_sops" ]]; then
|
||||
typeset -g -A _comps
|
||||
autoload -Uz _sops
|
||||
_comps[sops]=_sops
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._sops"
|
||||
zf_mv -f -- =( sops completion zsh ) "$ZSH_CACHE_DIR/completions/_sops"
|
||||
} &|
|
||||
@@ -12,6 +12,6 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_stripe"
|
||||
zf_mv -f -- =( stripe completion --shell zsh --write-to-stdout ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._stripe"
|
||||
zf_mv -f -- =( stripe completion --shell zsh --write-to-stdout ) "$ZSH_CACHE_DIR/completions/_stripe"
|
||||
} &|
|
||||
@@ -33,10 +33,10 @@ plugins=(... systemadmin)
|
||||
| killit | Kills any process that matches a regular expression passed to it |
|
||||
| tree | List contents of directories in a tree-like format (if tree isn't installed) |
|
||||
| sortcons | Sort connections by state |
|
||||
| con80 | View all 80 Port Connections |
|
||||
| con80 | View all connections on ports 80 and 443, or on the ports given as arguments (`con80 8080`) |
|
||||
| sortconip | On the connected IP sorted by the number of connections |
|
||||
| req20 | List the top 20 requests on port 80 |
|
||||
| http20 | List the top 20 connections to port 80 based on tcpdump data |
|
||||
| req20 | List the top 20 requests on ports 80 and 443, or on the ports given as arguments (`req20 8080`) |
|
||||
| http20 | List the top 20 connections to ports 80 and 443 based on tcpdump data, or to the ports given as arguments |
|
||||
| timewait20 | List the top 20 time_wait connections |
|
||||
| syn20 | List the top 20 SYN connections |
|
||||
| port_pro | Output all processes according to the port number |
|
||||
|
||||
@@ -65,60 +65,90 @@ fi
|
||||
|
||||
# Sort connection state
|
||||
function sortcons() {
|
||||
{
|
||||
LANG= ss -nat | awk 'NR > 1 {print $1}' \
|
||||
|| LANG= netstat -nat | awk 'NR > 2 {print $6}'
|
||||
} | sort | uniq -c | sort -rn
|
||||
if (( $+commands[ss] )); then
|
||||
LANG= ss -nat | awk 'NR > 1 {print $1}'
|
||||
else
|
||||
LANG= netstat -nat | awk 'NR > 2 {print $6}'
|
||||
fi | sort | uniq -c | sort -rn
|
||||
}
|
||||
|
||||
# View all 80 Port Connections
|
||||
function _systemadmin_validate_ports() {
|
||||
local port
|
||||
for port in "$@"; do
|
||||
if [[ $port != <0-65535> || ( $port == 0* && $port != 0 ) ]]; then
|
||||
print -u2 "systemadmin: invalid port '$port' (expected 0 to 65535 without leading zeros)"
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# View all connections on the given ports (default 80 and 443)
|
||||
function con80() {
|
||||
{
|
||||
LANG= ss -nat || LANG= netstat -nat
|
||||
} | grep -E ":80[^0-9]" | wc -l
|
||||
local -a ports=("$@")
|
||||
(( $# )) || ports=(80 443)
|
||||
_systemadmin_validate_ports "${ports[@]}" || return
|
||||
if (( $+commands[ss] )); then
|
||||
LANG= ss -nat
|
||||
else
|
||||
LANG= netstat -nat
|
||||
fi | grep -E ":(${(j:|:)ports})([[:space:]]|$)" | wc -l
|
||||
}
|
||||
|
||||
# On the connected IP sorted by the number of connections
|
||||
function sortconip() {
|
||||
{
|
||||
LANG= ss -ntu | awk 'NR > 1 {print $6}' \
|
||||
|| LANG= netstat -ntu | awk 'NR > 2 {print $5}'
|
||||
} | cut -d: -f1 | sort | uniq -c | sort -n
|
||||
if (( $+commands[ss] )); then
|
||||
LANG= ss -ntu | awk 'NR > 1 {print $6}'
|
||||
else
|
||||
LANG= netstat -ntu | awk 'NR > 2 {print $5}'
|
||||
fi | cut -d: -f1 | sort | uniq -c | sort -n
|
||||
}
|
||||
|
||||
# top20 of Find the number of requests on 80 port
|
||||
# top20 of Find the number of requests on the given ports (default 80 and 443)
|
||||
function req20() {
|
||||
{
|
||||
LANG= ss -tn | awk '$4 ~ /:80$/ {print $5}' \
|
||||
|| LANG= netstat -tn | awk '$4 ~ /:80$/ {print $5}'
|
||||
} | awk -F: '{print $1}' | sort | uniq -c | sort -nr | head -n 20
|
||||
local -a ports=("$@")
|
||||
(( $# )) || ports=(80 443)
|
||||
_systemadmin_validate_ports "${ports[@]}" || return
|
||||
if (( $+commands[ss] )); then
|
||||
LANG= ss -tn
|
||||
else
|
||||
LANG= netstat -tn
|
||||
fi | awk -v ports="${(j:|:)ports}" '$4 ~ ":("ports")$" {print $5}' \
|
||||
| awk -F: '{print $1}' | sort | uniq -c | sort -nr | head -n 20
|
||||
}
|
||||
|
||||
# top20 of Using tcpdump port 80 access to view
|
||||
# top20 of Using tcpdump to view access to the given ports (default 80 and 443)
|
||||
function http20() {
|
||||
sudo tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr | head -n 20
|
||||
local -a ports=("$@")
|
||||
(( $# )) || ports=(80 443)
|
||||
_systemadmin_validate_ports "${ports[@]}" || return
|
||||
sudo tcpdump -i eth0 -tnn -c 1000 "dst port ${(j: or :)ports}" | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr | head -n 20
|
||||
}
|
||||
|
||||
# top20 of Find time_wait connection
|
||||
function timewait20() {
|
||||
{
|
||||
LANG= ss -nat | awk 'NR > 1 && /TIME-WAIT/ {print $5}' \
|
||||
|| LANG= netstat -nat | awk 'NR > 2 && /TIME_WAIT/ {print $5}'
|
||||
} | sort | uniq -c | sort -rn | head -n 20
|
||||
if (( $+commands[ss] )); then
|
||||
LANG= ss -nat
|
||||
else
|
||||
LANG= netstat -nat
|
||||
fi | awk '/TIME[-_]WAIT/ {print $5}' | sort | uniq -c | sort -rn | head -n 20
|
||||
}
|
||||
|
||||
# top20 of Find SYN connection
|
||||
function syn20() {
|
||||
{
|
||||
LANG= ss -an | awk '/SYN/ {print $5}' \
|
||||
|| LANG= netstat -an | awk '/SYN/ {print $5}'
|
||||
} | awk -F: '{print $1}' | sort | uniq -c | sort -nr | head -n20
|
||||
if (( $+commands[ss] )); then
|
||||
LANG= ss -an
|
||||
else
|
||||
LANG= netstat -an
|
||||
fi | awk '/SYN/ {print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | head -n20
|
||||
}
|
||||
|
||||
# Printing process according to the port number
|
||||
function port_pro() {
|
||||
LANG= ss -ntlp | awk "NR > 1 && /:${1:-}/ {print \$6}" | sed 's/.*pid=\([^,]*\).*/\1/' \
|
||||
|| LANG= netstat -ntlp | awk "NR > 2 && /:${1:-}/ {print \$7}" | cut -d/ -f1
|
||||
if (( $+commands[ss] )); then
|
||||
LANG= ss -ntlp | awk "NR > 1 && /:${1:-}/ {print \$6}" | sed 's/.*pid=\([^,]*\).*/\1/'
|
||||
else
|
||||
LANG= netstat -ntlp | awk "NR > 2 && /:${1:-}/ {print \$7}" | cut -d/ -f1
|
||||
fi
|
||||
}
|
||||
|
||||
# top10 of gain access to the ip address
|
||||
|
||||
@@ -24,6 +24,6 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_tailscale"
|
||||
zf_mv -f -- =( tailscale completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._tailscale"
|
||||
zf_mv -f -- =( tailscale completion zsh ) "$ZSH_CACHE_DIR/completions/_tailscale"
|
||||
} &|
|
||||
@@ -13,6 +13,6 @@ fi
|
||||
# Generate and load task completion
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_task"
|
||||
zf_mv -f -- =( task --completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._task"
|
||||
zf_mv -f -- =( task --completion zsh ) "$ZSH_CACHE_DIR/completions/_task"
|
||||
} &|
|
||||
@@ -13,6 +13,6 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_timoni"
|
||||
zf_mv -f -- =( timoni completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._timoni"
|
||||
zf_mv -f -- =( timoni completion zsh ) "$ZSH_CACHE_DIR/completions/_timoni"
|
||||
} &|
|
||||
@@ -178,6 +178,11 @@ alias tmux=_zsh_tmux_plugin_run
|
||||
function _tmux_directory_session() {
|
||||
# current directory without leading path
|
||||
local dir=${PWD##*/}
|
||||
# tmux target syntax treats '.' and ':' as separators, a leading '$', '@' or '%'
|
||||
# as an id and a leading '=' as an exact-match prefix, so a session named after
|
||||
# such a directory can't be found on reattach
|
||||
dir=${dir//[.:]/_}
|
||||
dir=${dir/#[\$@%=]/_}
|
||||
# md5 hash for the full working directory path
|
||||
local md5=$(printf '%s' "$PWD" | md5sum | cut -d ' ' -f 1)
|
||||
# human friendly unique session name for this directory
|
||||
|
||||
@@ -52,7 +52,7 @@ The plugin will generate a default archive filename based on the input:
|
||||
|
||||
| Format | Description | Tool Used |
|
||||
|:-----------------|:-------------------------------|:-----------------|
|
||||
| `7z` | 7zip archive | `7z` |
|
||||
| `7z` | 7zip archive | `7zz`,`7z`,`7za` |
|
||||
| `bz2` | Bzip2-compressed file | `bzip2` |
|
||||
| `gz` | Gzip-compressed file | `gzip` |
|
||||
| `lzma` | LZMA-compressed file | `lzma` |
|
||||
|
||||
@@ -49,7 +49,17 @@ tlz (tar.lzma), txz (tar.xz), tZ (tar.Z), xz, Z, zip, and zst."
|
||||
fi
|
||||
|
||||
case "$ext" in
|
||||
7z) 7z u "${output}" "${@}" ;;
|
||||
7z)
|
||||
if (( $+commands[7zz] )); then
|
||||
7zz u "${output}" "${@}"
|
||||
elif (( $+commands[7z] )); then
|
||||
7z u "${output}" "${@}"
|
||||
elif (( $+commands[7za] )); then
|
||||
7za u "${output}" "${@}"
|
||||
else
|
||||
echo "ua: cannot create 7z files: install 7zz, 7z or 7za" >&2
|
||||
return 1
|
||||
fi ;;
|
||||
bz2) bzip2 -vcf "${@}" > "${output}" ;;
|
||||
gz) gzip -vcf "${@}" > "${output}" ;;
|
||||
lzma) lzma -vc -T0 "${@}" > "${output}" ;;
|
||||
|
||||
@@ -45,10 +45,10 @@ fi
|
||||
# Overwrites the file each time as completions might change with uv versions.
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_uv"
|
||||
zf_mv -f -- =( uv generate-shell-completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._uv"
|
||||
zf_mv -f -- =( uv generate-shell-completion zsh ) "$ZSH_CACHE_DIR/completions/_uv"
|
||||
} &|
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_uvx"
|
||||
zf_mv -f -- =( uvx --generate-shell-completion zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._uvx"
|
||||
zf_mv -f -- =( uvx --generate-shell-completion zsh ) "$ZSH_CACHE_DIR/completions/_uvx"
|
||||
} &|
|
||||
@@ -13,6 +13,6 @@ fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_volta"
|
||||
zf_mv -f -- =( volta completions zsh ) "$TMPPREFIX"
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/._volta"
|
||||
zf_mv -f -- =( volta completions zsh ) "$ZSH_CACHE_DIR/completions/_volta"
|
||||
} &|
|
||||
+12
-1
@@ -38,6 +38,17 @@ Zsh-z is a drop-in replacement for `rupa/z` and will, by default, use the same d
|
||||
|
||||
## News
|
||||
|
||||
### v2.0.1 (October 1, 2026)
|
||||
|
||||
- **Database writes now work with `setopt NO_CLOBBER`.** Under `NO_CLOBBER`,
|
||||
every database write could fail with `can't clobber parameter tmpfd containing
|
||||
file descriptor 0`, even when the database already existed. That error no longer
|
||||
occurs ([#81](https://github.com/agkozak/zsh-z/issues/81)).
|
||||
- **Database and lockfile creation now works with `setopt NO_CLOBBER`.** With
|
||||
`NO_CLOBBER` set and `APPEND_CREATE` unset, Zsh-z could not create a missing
|
||||
database or lockfile. It now creates them without changing your shell options or
|
||||
losing existing directory history ([#105](https://github.com/agkozak/zsh-z/issues/105)).
|
||||
|
||||
### v2.0 (August 14, 2026)
|
||||
|
||||
Version **2.0** is a major step forward, and these are the changes most worth knowing about:
|
||||
@@ -47,7 +58,7 @@ Version **2.0** is a major step forward, and these are the changes most worth kn
|
||||
- **Safer, crash-resistant concurrent writes.** Writes are now guarded by a dedicated, stable lockfile using `zsh/system` file locking, with a bounded wait for lock acquisition (the new [`ZSHZ_LOCK_TIMEOUT`](#settings), default `1` second). Write errors are handled gracefully, and locks are always released even if a write is interrupted. On Cygwin and MSYS2 a write is also retried briefly if Windows refuses it: a virus scanner or the search indexer that opens the database in the instant between its being written and its being moved into place makes the move fail, which used to lose that one directory silently. Zsh-z now retries the move briefly.
|
||||
- **Your database file now has `600` permissions** -- readable and writable only by you -- so that other users on a shared system cannot read your directory history ([#92](https://github.com/agkozak/zsh-z/issues/92)). On Zsh 5+ this uses the in-process `zf_chmod` builtin; on Zsh 4.3.11 it uses a `umask`-in-a-subshell technique that avoids the fork-and-exec of an external `chmod`.
|
||||
- **`COMPLETE_ALIASES` works automatically in normal setups.** Tab completion no longer breaks when you have `setopt COMPLETE_ALIASES` enabled. Zsh-z registers the alias automatically on the first Tab press, so the manual `compdef` line that earlier versions required is no longer necessary. [See below](#complete_aliases).
|
||||
- **Fixed a `can't clobber parameter tmpfd` error on some Zsh builds.** On certain Zsh builds, every database write could fail with `can't clobber parameter tmpfd containing file descriptor 0`, leaving an error at each new prompt. The file descriptor used for the temporary database file is now held in an unset scalar rather than one seeded with `0`, so the write never trips Zsh's file-descriptor-clobber guard ([#81](https://github.com/agkozak/zsh-z/issues/81)).
|
||||
- **Fixed a `can't clobber parameter tmpfd` error on some Zsh builds.** On certain Zsh builds, every database write could fail with `can't clobber parameter tmpfd containing file descriptor 0`, leaving an error at each new prompt ([#81](https://github.com/agkozak/zsh-z/issues/81)). *Correction:* the error occurs under `setopt NO_CLOBBER`, and the v2.0 change did not fix it there; v2.0.1 does.
|
||||
- **A misconfigured database file no longer closes your shell -- or nags you at every prompt.** When `ZSHZ_DATA` points at a directory, or names a file without a directory, Zsh-z now reports the problem and returns instead of calling `exit`. The per-prompt `--add` stays quiet about it, so you are told once, when you actually run `z`, rather than at every prompt ([#103](https://github.com/agkozak/zsh-z/issues/103); props @ahjota).
|
||||
- **`z -x` can now remove the entry for a directory that no longer exists -- and can no longer crash Zsh 4.3.11.** The removal target used to have to exist on disk, so a database entry whose directory had been deleted -- exactly the entry you most want gone -- could not be removed. `z -x /deleted/dir` (and `z -xR`) now canonicalizes the argument without requiring it to exist, resolving symlinks in as much of the path as is still present. The same change fixes a crash on Zsh 4.3.11, where an upstream bug makes `${x:A}` segfault when the top-level component of the path is missing: `z -x /gone/sub` -- or a `ZSHZ_DATA` pointing into a missing top-level directory -- could kill the shell there.
|
||||
- **More robust startup and operation.** A version check on an unsupported Zsh no longer risks exiting your interactive shell.
|
||||
|
||||
+14
-13
@@ -371,16 +371,17 @@ zshz() {
|
||||
# before the lock is taken, and on Cygwin/MSYS2 a concurrent writer's rename
|
||||
# passes through a window in which the datafile is unlinked or delete-
|
||||
# pending, so any second syscall on the path (chmod) -- or even the creating
|
||||
# open itself -- can fail spuriously. Append mode (>>) creates the file
|
||||
# without truncating one that a concurrent writer has just renamed into
|
||||
# place. The first attempt is silent; if the file still does not exist
|
||||
# open itself -- can fail spuriously. Forced append redirection (>>|) creates
|
||||
# the file even under NO_CLOBBER with APPEND_CREATE disabled, without
|
||||
# truncating one that a concurrent writer has just renamed into place.
|
||||
# The first attempt is silent; if the file still does not exist
|
||||
# afterward (so no concurrent writer supplied it), retry loudly so that real
|
||||
# failures (directory permissions, read-only filesystem) reach the user.
|
||||
[[ -f $datafile ]] || {
|
||||
mkdir -p "${datafile:h}" &&
|
||||
( umask 077; : >> "$datafile" ) 2> /dev/null ||
|
||||
( umask 077; : >>| "$datafile" ) 2> /dev/null ||
|
||||
[[ -f $datafile ]] ||
|
||||
( umask 077; : >> "$datafile" )
|
||||
( umask 077; : >>| "$datafile" )
|
||||
# When $ZSHZ_OWNER is set (e.g. under `sudo -s'), hand the freshly created
|
||||
# file off to that user immediately, so a query-only invocation can't leave
|
||||
# behind a root-owned .z that the normal-user shell can't read. `-h' so a
|
||||
@@ -525,14 +526,14 @@ zshz() {
|
||||
# two-inodes race the stable lockfile exists to prevent.
|
||||
# Under $ZSHZ_OWNER all of this runs with root's authority on a path the
|
||||
# unprivileged owner controls, and every step follows a symlink: `-f'
|
||||
# tests the target, `>>' creates a dangling one, and flock opens it.
|
||||
# tests the target, `>>|' creates a dangling one, and flock opens it.
|
||||
# $datafile survives a planted link only because the `mv' below replaces
|
||||
# it outright; the lockfile is deliberately never removed, so a symlink
|
||||
# here would persist and be acted on at every subsequent write. Refuse.
|
||||
local _lock_owner=${ZSHZ_OWNER:-${_Z_OWNER}}
|
||||
[[ -n $_lock_owner && -L $lockfile ]] && return 1
|
||||
if [[ ! -f $lockfile ]]; then
|
||||
( umask 077; : >> "$lockfile" ) 2> /dev/null
|
||||
( umask 077; : >>| "$lockfile" ) 2> /dev/null
|
||||
[[ -n $_lock_owner ]] &&
|
||||
${ZSHZ[CHOWN]} -h "${_lock_owner}:$(id -ng "${_lock_owner}")" "$lockfile"
|
||||
fi
|
||||
@@ -585,13 +586,13 @@ zshz() {
|
||||
# Discard entries that are incomplete or incorrectly formatted
|
||||
lines=( ${(M)lines:#/*\|[[:digit:]]##[.,]#[[:digit:]]#\|[[:digit:]]##} )
|
||||
|
||||
# Hold the fd in an *unset* scalar, not `integer tmpfd' (which seeds it
|
||||
# with 0). On some Zsh builds, `exec {tmpfd}>|...' refuses to clobber a
|
||||
# parameter already holding a number that names an open fd -- and 0 is
|
||||
# stdin, always open -- yielding "can't clobber parameter tmpfd
|
||||
# containing file descriptor 0". An empty scalar isn't a valid fd, so
|
||||
# the guard never fires. See https://github.com/agkozak/zsh-z/issues/81
|
||||
# Explicitly unset the local scalar before allocating a file descriptor.
|
||||
# Under NO_CLOBBER, even an empty scalar can be treated as fd 0 (stdin),
|
||||
# causing `exec {tmpfd}>|...' to refuse to overwrite it. The `>|' only
|
||||
# overrides file clobber protection, not the descriptor parameter check.
|
||||
# See https://github.com/agkozak/zsh-z/issues/81
|
||||
local tmpfd
|
||||
unset tmpfd
|
||||
case $action in
|
||||
--add)
|
||||
# When zf_chmod isn't available (Zsh 4.3.11), avoid the
|
||||
|
||||
Reference in new issue
Block a user