mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-01-23 02:35:38 +01:00
feat(docker): Add 'dxgcit', grepping version of 'dxcit'
This commit is contained in:
parent
35068db837
commit
3d40ae961a
2 changed files with 41 additions and 1 deletions
|
|
@ -36,6 +36,40 @@ alias dvprune='docker volume prune'
|
|||
alias dxc='docker container exec'
|
||||
alias dxcit='docker container exec -it'
|
||||
|
||||
function _dxgcit() {
|
||||
if [ $# -lt 2 ]; then
|
||||
echo "Usage: $0 <grep-pattern> <command...>" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
local pattern=$1
|
||||
shift 1
|
||||
|
||||
local -a candidates
|
||||
candidates=(
|
||||
${(f)"$(docker ps --format "{{.ID}}:{{.Names}}:{{.Image}}" | grep -- "$pattern")"}
|
||||
)
|
||||
if [ ${#candidates[@]} -eq 0 ]; then
|
||||
printf "No container/image matches name pattern: '%s'!\n" "$pattern" >&2
|
||||
return 1
|
||||
fi
|
||||
if [ ${#candidates[@]} -ne 1 ]; then
|
||||
printf "Ambiguous container/image name pattern: '%s' results in '%d' candidates!\n" \
|
||||
"$pattern" "${#candidates[@]}" >&2
|
||||
for candidate in ${candidates[@]}; do
|
||||
parts=(${(@s/:/)candidate})
|
||||
printf " %s (%s) (image: %s)\n" "${parts[1]}" "${parts[2]}" "${parts[3]}" >&2
|
||||
done
|
||||
return 1
|
||||
fi
|
||||
|
||||
local -a candidate
|
||||
candidate=(${(@s/:/)${candidates[1]}})
|
||||
local id="${candidate[1]}"
|
||||
docker container exec -it "$id" "$@"
|
||||
}
|
||||
alias dxgcit='_dxgcit'
|
||||
|
||||
if (( ! $+commands[docker] )); then
|
||||
return
|
||||
fi
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue