Task Nesting Loop For
Vendor: https://taskfile.dev/ Github: https://github.com/go-task/task
Usage case: set git config value for all repositories of team/organization
version: "3"
vars:
config:
- { o: 'user.name', v: user }
- { o: 'user.email', v: [email protected] }
- { o: 'pull.rebase', v: 'false' }
-
path: "~/dev/my"
repos:
sh: "ls -1 {{.path}} | grep -v disabled"
cG: "\e[38;05;10m"
cB: "\e[38;05;12m"
cZ: '\033[0m'
tasks:
default:
silent: true
cmds:
- echo "Git Team Project Tool"
list:
silent: true
desc: List existing directories
cmds:
- for: { var: repos }
cmd: echo {{.ITEM}}
-
# ... skipped ...
setconfig:
desc: "git set config options"
cmds:
- for: { var: repos }
task: setconfig-items
vars:
repo: "{{.ITEM}}"
setconfig-items:
internal: true
silent: true
cmds:
- for:
var: config
cmd: |
echo -e "{{.cB}}[*] Repo: {{.path}}/{{.repo}}{{.cZ}} {{.cG}}{{.ITEM.o}}{{.cZ}}: {{.ITEM.v}}"
bash -c "git -C {{.path}}/{{.repo}} config {{.ITEM.o}} {{.ITEM.v}}"