id = "myrepos" name = "myrepos" homepage = "https://myrepos.branchable.com" description = "myrepos provides a mr command, which is a tool to manage all your version control repositories." executables = ["mr"] [dotfiles] # myrepos.branchable.com, the front page: `mr bootstrap` "sets up a ~/.mrconfig # file listing your repositories", and "The ~/.mrconfig file makes it easy to # override the command run for any repository. It's like a Makefile for # repositories." # # The mr(1) man page, embedded as POD in the `mr` script itself, names the # second file: "To configure mr to trust other mrconfig files, list them in # F<~/.mrtrust>. One mrconfig file should be listed per line." The --trust-all # flag is documented as "Trust all mrconfig files even if they are not listed # in F<~/.mrtrust>." # # Both are plain home dotfiles; mr does not consult $XDG_CONFIG_HOME for them. paths = [ "~/.mrconfig", "~/.mrtrust", ] # From the same man page, under "OFFLINE LOG FILE": "The F<~/.mrlog> file # contains commands that mr has remembered to run later, due to being # offline." Queued work on one machine, not configuration; it is not under a # path above, so there is nothing to carve out of what is. exclude = ["~/.mrlog"] # mr runs the version-control tools; the credentials belong to those, not to # this file. secret = [] # Read at the start of each mr invocation. side_effect = false # No machine_lines. ~/.mrconfig is a list of repositories keyed by their # checkout location, and ~/.mrtrust is a list of pathnames — in both files the # paths *are* the content, so blanking them would leave nothing behind rather # than a portable file. The man page's own advice is to keep ~/.mrconfig itself # under version control and share it between machines. [commands] format = 1 label = "Run mr action" description = "Run one mr action (update, status, push, diff) across the registered repositories. Parallel jobs, caching, bootstrap and custom commands are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = false, short_bundles = false } [[commands.source]] id = "manpage" kind = "manual" url = "https://manpages.debian.org/unstable/myrepos/mr.1.en.html" revision = "2026-10-27" evidence = """ update Updates each repository from its configured remote repository. status Displays a status report for each repository, showing what uncommitted push Pushes committed local changes to the remote repository. diff -d directory --directory Specifies the topmost directory that mr should work in. --config mrconfig --force --verbose -v --minimal -m --quiet -q --stats -s --interactive -i """ [[commands.field]] id = "action" label = "Action" type = "enum" position = 0 choices = [{ value = "update", label = "Update" }, { value = "status", label = "Status" }, { value = "push", label = "Push" }, { value = "diff", label = "Diff" }] sources = ["manpage"] [[commands.field]] id = "directory" label = "Top directory" description = "Topmost directory mr should work in; defaults to the current directory." type = "path" option = ["--directory", "-d"] path = { kind = "directory", role = "input" } sources = ["manpage"] [[commands.field]] id = "config" label = "mrconfig file" type = "path" option = ["--config"] path = { kind = "file", role = "input" } sources = ["manpage"] [[commands.field]] id = "verbose" label = "Verbose" type = "boolean" option = ["--verbose", "-v"] sources = ["manpage"] [[commands.field]] id = "minimal" label = "Minimal output" type = "boolean" option = ["--minimal", "-m"] sources = ["manpage"] [[commands.field]] id = "quiet" label = "Quiet" type = "boolean" option = ["--quiet", "-q"] sources = ["manpage"] [[commands.field]] id = "stats" label = "Expanded statistics" type = "boolean" option = ["--stats", "-s"] sources = ["manpage"] [[commands.field]] id = "interactive" label = "Interactive on failure" type = "boolean" option = ["--interactive", "-i"] sources = ["manpage"] [[commands.task]] id = "update" label = "Update all repositories" fields = ["action"] required = ["action"] set = { action = ["update"] } [[commands.task]] id = "status" label = "Status of all repositories" fields = ["action"] required = ["action"] set = { action = ["status"] } [[commands.group]] id = "basic" label = "Basic" fields = ["action", "directory", "verbose", "quiet"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["config", "minimal", "stats", "interactive"]