mirror of
https://gitea.com/mcereda/oam.git
synced 2026-02-09 05:44:23 +00:00
69 lines
1.5 KiB
Fish
69 lines
1.5 KiB
Fish
#!/usr/bin/env fish
|
|
|
|
argparse -s \
|
|
'c/command=' \
|
|
'D/debug' \
|
|
'e/executor=' \
|
|
'p/path=+' \
|
|
'r/recursive' \
|
|
't/threads=' \
|
|
-- $argv
|
|
or return
|
|
|
|
if ! set -q '_flag_executor'
|
|
set '_flag_executor' 'parallel'
|
|
end
|
|
if ! set -q '_flag_path'
|
|
set '_flag_path' "$PWD"
|
|
end
|
|
if ! set -q '_flag_recursive'
|
|
set '_flag_recursive' '-r'
|
|
end
|
|
if ! set -q '_flag_threads'
|
|
set '_flag_threads' (nproc)
|
|
end
|
|
|
|
if set -q '_flag_debug'
|
|
echo "
|
|
command: $_flag_command
|
|
debug: $_flag_debug
|
|
executor: $_flag_executor
|
|
path: $_flag_path
|
|
recursive: $_flag_recursive
|
|
threads: $_flag_threads
|
|
argv: $argv
|
|
" | column -t
|
|
end
|
|
|
|
if test "$_flag_recursive" = '-r' || test "$_flag_recursive" = '--recursive'
|
|
if set -q '_flag_debug'
|
|
echo 'DEBUG: recursive test returned true'
|
|
end
|
|
set repositories (find $_flag_path -type 'd' -name '.git' -exec dirname {} +)
|
|
else
|
|
if set -q '_flag_debug'
|
|
echo 'DEBUG: recursive test returned false'
|
|
end
|
|
set repositories $_flag_path
|
|
end
|
|
|
|
if set -q '_flag_debug'
|
|
echo "DEBUG: repositories: $repositories"
|
|
set _parallel_flag_debug '-t'
|
|
set _xargs_flag_debug '-t'
|
|
end
|
|
|
|
switch $_flag_executor
|
|
case 'parallel'
|
|
if ! which parallel > /dev/null
|
|
echo "Error: GNU parallel not found" >&2
|
|
return
|
|
end
|
|
parallel --color-failed $_parallel_flag_debug -j "$_flag_threads" --tagstring "{/}" "git -C {} $_flag_command" ::: $repositories
|
|
case 'xargs'
|
|
echo $repositories | xargs $_xargs_flag_debug -P "$_flag_threads" -I{} git -C "{}" $_flag_command
|
|
case '*'
|
|
echo "Error: $runner not supported" >&2
|
|
return
|
|
end
|