id = "mani"
name = "mani"
homepage = "https://manicli.com/"
description = "CLI tool for managing multiple repositories"
executables = ["mani"]
[dotfiles]
paths = [
"[configHome]/mani/config.yaml",
"[appData]/mani/config.yaml",
]
secret = []
[commands]
format = 1
label = "mani"
description = "Run a shell command across the projects in mani.yaml. Other subcommands, tag expressions and themes are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false }
[[commands.subcommand]]
path = ["exec"]
label = "Run a command on projects"
[[commands.subcommand.source]]
id = "docs"
kind = "manual"
url = "https://github.com/alajmo/mani/blob/main/docs/commands.md"
evidence = """ mani exec --all ls
-a, --all target all projects
-k, --cwd use current working directory
--dry-run print commands without executing them
-f, --forks uint32 maximum number of concurrent processes (default 4)
--ignore-errors ignore errors
-o, --output string set output format [stream|table|markdown|html]
--parallel run tasks in parallel across projects
-d, --paths strings select projects by path
-p, --projects strings select projects by name
-s, --silent hide progress when running tasks
-t, --tags strings select projects by tag"""
[[commands.subcommand.field]]
id = "command"
label = "Command"
description = "Shell command to run; quote pipelines."
type = "string"
position = 0
sources = ["docs"]
[[commands.subcommand.field]]
id = "all"
label = "All projects"
type = "boolean"
option = ["--all", "-a"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "projects"
label = "Projects"
description = "Project names, comma separated."
type = "string"
option = ["--projects", "-p"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "tags"
label = "Tags"
description = "Tags, comma separated."
type = "string"
option = ["--tags", "-t"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "paths"
label = "Paths"
description = "Project paths, comma separated."
type = "string"
option = ["--paths", "-d"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "cwd"
label = "Current directory"
type = "boolean"
option = ["--cwd", "-k"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "parallel"
label = "Parallel"
type = "boolean"
option = ["--parallel"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "forks"
label = "Max concurrent"
type = "integer"
option = ["--forks", "-f"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "output"
label = "Output format"
type = "enum"
option = ["--output", "-o"]
choices = [{ value = "stream", label = "Stream" }, { value = "table", label = "Table" }, { value = "markdown", label = "Markdown" }, { value = "html", label = "HTML" }]
sources = ["docs"]
[[commands.subcommand.field]]
id = "dry_run"
label = "Dry run"
type = "boolean"
option = ["--dry-run"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "ignore_errors"
label = "Ignore errors"
type = "boolean"
option = ["--ignore-errors"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "silent"
label = "Silent"
type = "boolean"
option = ["--silent", "-s"]
sources = ["docs"]
[[commands.subcommand.task]]
id = "all"
label = "Run on all projects"
set = { all = [true] }
lock = ["all"]
fields = ["command", "all", "parallel", "output", "dry_run"]
required = ["command"]
[[commands.subcommand.task]]
id = "selected"
label = "Run on selected projects"
fields = ["command", "projects", "tags", "paths", "parallel", "output"]
required = ["command"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["command", "all", "projects", "tags", "paths", "cwd", "parallel", "output"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["forks", "dry_run", "ignore_errors", "silent"]