id = "multi-gitter" name = "multi-gitter" homepage = "https://github.com/lindell/multi-gitter" description = "Update multiple repositories with one command." executables = ["multi-gitter"] [dotfiles] # The upstream README documents ~/.multi-gitter/config as the static config # file. It is YAML despite having no extension, and its optional `token` field # can hold a GitHub, GitLab, or Gitea credential. # https://github.com/lindell/multi-gitter#config-file paths = ["~/.multi-gitter/config"] secret = [] [[dotfiles.secret_paths]] file = "~/.multi-gitter/config" format = "yaml" match = { key_path = ["token"] } [commands] format = 1 label = "multi-gitter" description = "Run a script across many repositories and open pull requests. Only the run subcommand is modelled; tokens and other platform flags are left out (use environment variables for tokens)." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false } [[commands.subcommand]] path = ["run"] label = "Run a script on repositories" [[commands.subcommand.source]] id = "readme" kind = "help" url = "https://raw.githubusercontent.com/lindell/multi-gitter/HEAD/README.md" revision = "2026-10" evidence = """ multi-gitter run [script path] [flags] -B, --branch string The name of the branch where changes are committed. (default "multi-gitter-branch") -m, --commit-message string The commit message. Will default to title + body if none is set. -d, --dry-run Run without pushing changes or creating pull requests. --draft Create pull request(s) as draft. -O, --org strings The name of a GitHub organization. All repositories in that organization will be used. -R, --repo strings The name of a GitHub repository in the format "ownerName/repoName". -U, --user strings The name of a user. All repositories owned by that user will be used. -t, --pr-title string The title of the PR. --skip-pr Skip pull request and directly push to the branch. """ [[commands.subcommand.field]] id = "script" label = "Script" description = "Script path or command line to run in each repository." type = "string" position = 0 min = 1 effect = "exec" sources = ["readme"] [[commands.subcommand.field]] id = "org" label = "GitHub organization" type = "string" option = ["--org", "-O"] multiple = true sources = ["readme"] [[commands.subcommand.field]] id = "repo" label = "Repository (owner/name)" type = "string" option = ["--repo", "-R"] multiple = true sources = ["readme"] [[commands.subcommand.field]] id = "user" label = "User" type = "string" option = ["--user", "-U"] multiple = true sources = ["readme"] [[commands.subcommand.field]] id = "branch" label = "Branch name" type = "string" option = ["--branch", "-B"] sources = ["readme"] [[commands.subcommand.field]] id = "message" label = "Commit message" type = "string" option = ["--commit-message", "-m"] sources = ["readme"] [[commands.subcommand.field]] id = "pr_title" label = "Pull request title" type = "string" option = ["--pr-title", "-t"] sources = ["readme"] [[commands.subcommand.field]] id = "dry_run" label = "Dry run" type = "boolean" option = ["--dry-run", "-d"] sources = ["readme"] [[commands.subcommand.field]] id = "draft" label = "Draft pull requests" type = "boolean" option = ["--draft"] sources = ["readme"] [[commands.subcommand.field]] id = "skip_pr" label = "Push directly, no pull request" type = "boolean" option = ["--skip-pr"] effect = "overwrite" sources = ["readme"] [[commands.subcommand.task]] id = "dry" label = "Dry run over an organization" fields = ["script", "org", "branch", "message"] required = ["script", "org", "branch", "message"] set = { dry_run = [true] } [[commands.subcommand.task]] id = "open_prs" label = "Open pull requests" fields = ["script", "org", "repo", "branch", "message", "pr_title", "draft"] required = ["script", "branch", "message"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["script", "org", "repo", "user", "branch", "message"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["pr_title", "dry_run", "draft", "skip_pr"]