get rid of eval (use readarray)

This commit is contained in:
fatalerrors
2026-07-09 18:17:53 +02:00
parent c1ea14e145
commit 99dc9a4ef5
15 changed files with 130 additions and 46 deletions

View File

@@ -95,7 +95,9 @@ gst()
return 1
fi
eval set -- "$PARSED"
local -a _pargs=()
readarray -td '' _pargs < <(printf '%s' "$PARSED" | xargs printf '%s\0')
set -- "${_pargs[@]}"
while true; do
case "$1" in
-h|--help)
@@ -142,7 +144,9 @@ ggraph()
return 1
fi
eval set -- "$PARSED"
local -a _pargs=()
readarray -td '' _pargs < <(printf '%s' "$PARSED" | xargs printf '%s\0')
set -- "${_pargs[@]}"
local limit=30
while true; do
case "$1" in
@@ -193,7 +197,9 @@ gsync()
return 1
fi
eval set -- "$PARSED"
local -a _pargs=()
readarray -td '' _pargs < <(printf '%s' "$PARSED" | xargs printf '%s\0')
set -- "${_pargs[@]}"
while true; do
case "$1" in
-h|--help)
@@ -248,7 +254,9 @@ gacp()
return 1
fi
eval set -- "$PARSED"
local -a _pargs=()
readarray -td '' _pargs < <(printf '%s' "$PARSED" | xargs printf '%s\0')
set -- "${_pargs[@]}"
local msg="" auto_add=0
case "${GIT_GACP_AUTO_ADD,,}" in
1|true|yes|on) auto_add=1 ;;
@@ -366,7 +374,9 @@ greset()
return 1
fi
eval set -- "$PARSED"
local -a _pargs=()
readarray -td '' _pargs < <(printf '%s' "$PARSED" | xargs printf '%s\0')
set -- "${_pargs[@]}"
local clean_ignored=0
while true; do
case "$1" in
@@ -482,7 +492,9 @@ gwip()
return 1
fi
eval set -- "$PARSED"
local -a _pargs=()
readarray -td '' _pargs < <(printf '%s' "$PARSED" | xargs printf '%s\0')
set -- "${_pargs[@]}"
while true; do
case "$1" in
-h|--help)
@@ -525,9 +537,9 @@ export -f gwip
# (git branch --merged).
# Deep mode (-D/--deep): additionally deletes branches whose tracking remote
# has disappeared (remote pruned after a merge request / pull request merge).
# Those branches are detected via `git fetch --prune` + remote-tracking gone.
# Those branches are detected via 'git fetch --prune' + remote-tracking gone.
# This is the common case when the MR was merged upstream and the remote
# branch was deleted by the forge. Deletion uses `git branch -D` (force)
# branch was deleted by the forge. Deletion uses 'git branch -D' (force)
# because the local branch has no merged ancestor that git can verify locally.
gprune()
{
@@ -539,7 +551,9 @@ gprune()
return 1
fi
eval set -- "$PARSED"
local -a _pargs=()
readarray -td '' _pargs < <(printf '%s' "$PARSED" | xargs printf '%s\0')
set -- "${_pargs[@]}"
while true; do
case "$1" in
-h|--help)
@@ -583,7 +597,7 @@ gprune()
[[ $b == "master" || $b == "main" || $b == "develop" || $b == "dev" ]] && continue
git branch -d "$b" >/dev/null 2>&1 && {
printf "Deleted (merged): %s\n" "$b"
deleted=$((deleted+1))
deleted=$(( deleted+1 ))
}
done < <(git branch --merged "$base" | sed -E 's/^\*?\s*//')
@@ -598,16 +612,18 @@ gprune()
[[ $b == "$current" ]] && continue
[[ $b == "$base" ]] && continue
[[ $b == "master" || $b == "main" || $b == "develop" || $b == "dev" ]] && continue
# Detect a gone upstream without relying on localized "gone]" text:
# resolve the branch's upstream, then check its remote-tracking ref.
upstream=$(git rev-parse --abbrev-ref "${b}@{upstream}" 2>/dev/null) || true
[[ -z "$upstream" ]] && continue # no tracking branch at all — skip
# If the remote-tracking ref still exists, the upstream is not gone.
git show-ref --verify --quiet "refs/remotes/$upstream" 2>/dev/null && continue
sha=$(git rev-parse --short "$b" 2>/dev/null)
git branch -D "$b" >/dev/null 2>&1 && {
printf "Deleted (gone upstream): %s (%s)\n" "$b" "$sha"
deleted=$((deleted+1))
deleted=$(( deleted+1))
}
done < <(git for-each-ref --format='%(refname:short)' refs/heads/)
fi
@@ -631,7 +647,9 @@ groot()
return 1
fi
eval set -- "$PARSED"
local -a _pargs=()
readarray -td '' _pargs < <(printf '%s' "$PARSED" | xargs printf '%s\0')
set -- "${_pargs[@]}"
local do_go=0
while true; do
case "$1" in