Commands
mani
repositories manager and task runner
Synopsis
mani is a CLI tool that helps you manage multiple repositories.
It's useful when you are working with microservices, multi-project systems, multiple libraries, or just a collection of repositories and want a central place for pulling all repositories and running commands across them.
Options
--color enable color (default true)
-c, --config string specify config
-h, --help help for mani
-u, --user-config string specify user config
run
Run tasks
Synopsis
Run tasks.
The tasks are specified in a mani.yaml file along with the projects you can target.
run <task>
Examples
# Execute task for all projects
mani run <task> --all
# Execute a task in parallel with a maximum of 8 concurrent processes
mani run <task> --projects <project> --parallel --forks 8
# Execute task for a specific projects
mani run <task> --projects <project>
# Execute a task for projects with specific tags
mani run <task> --tags <tag>
# Execute a task for projects matching specific paths
mani run <task> --paths <path>
# Execute a task for all projects matching a tag expression
mani run <task> --tags-expr 'active || git' <tag>
# Execute a task with environment variables from shell
mani run <task> key=value
Options
-a, --all select all projects
-k, --cwd select current working directory
--describe display task information
--dry-run display the task without execution
-e, --edit edit task
-f, --forks uint32 maximum number of concurrent processes (default 4)
-h, --help help for run
--ignore-errors continue execution despite errors
--ignore-non-existing skip non-existing projects
--omit-empty-columns hide empty columns in table output
--omit-empty-rows hide empty rows in table output
-o, --output string set output format [stream|table|markdown|html]
--parallel execute tasks in parallel across projects
-d, --paths strings select projects by path
-p, --projects strings select projects by name
-s, --silent hide progress output during task execution
-J, --spec string set spec
-t, --tags strings select projects by tag
-E, --tags-expr string select projects by tags expression
-T, --target string select projects by target name
--theme string set theme
--tty replace current process
exec
Execute arbitrary commands
Synopsis
Execute arbitrary commands. Use single quotes around your command to prevent file globbing and environment variable expansion from occurring before the command is executed in each directory.
exec <command> [flags]
Examples
# List files in all projects
mani exec --all ls
# List git files with markdown suffix in all projects
mani exec --all 'git ls-files | grep -e ".md"'
Options
-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)
-h, --help help for exec
--ignore-errors ignore errors
--ignore-non-existing ignore non-existing projects
--omit-empty-columns omit empty columns in table output
--omit-empty-rows omit empty rows in table output
-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
-J, --spec string set spec
-t, --tags strings select projects by tag
-E, --tags-expr string select projects by tags expression
-T, --target string target projects by target name
--theme string set theme
--tty replace current process
init
Initialize a mani repository
Synopsis
Initialize a mani repository.
Creates a new mani repository by generating a mani.yaml configuration file and a .gitignore file in the current directory.
init [flags]
Examples
# Initialize with default settings
mani init
# Initialize without auto-discovering projects
mani init --auto-discovery=false
# Initialize without updating .gitignore
mani init --sync-gitignore=false
Options
--auto-discovery automatically discover and add Git repositories to mani.yaml (default true)
-h, --help help for init
-g, --sync-gitignore synchronize .gitignore file (default true)
sync
Clone repositories and update .gitignore
Synopsis
Clone repositories and update .gitignore file. For repositories requiring authentication, disable parallel cloning to enter credentials for each repository individually.
sync [flags]
Examples
# Clone repositories one at a time
mani sync
# Clone repositories in parallell
mani sync --parallel
# Disable updating .gitignore file
mani sync --sync-gitingore=false
# Sync project remotes. This will modify the projects .git state
mani sync --sync-remotes
# Clone repositories even if project sync field is set to false
mani sync --ignore-sync-state
# Display sync status
mani sync --status
Options
-f, --forks uint32 maximum number of concurrent processes (default 4)
-h, --help help for sync
--ignore-sync-state sync project even if the project's sync field is set to false
-p, --parallel clone projects in parallel
-d, --paths strings clone projects by path
-s, --status display status only
-g, --sync-gitignore sync gitignore (default true)
-r, --sync-remotes update git remote state
-t, --tags strings clone projects by tags
-E, --tags-expr string clone projects by tag expression
edit
Open up mani config file
Synopsis
Open up mani config file in $EDITOR.
edit [flags]
Examples
# Edit current context
mani edit
Options
-h, --help help for edit
edit project
Edit mani project
Synopsis
Edit mani project in $EDITOR.
edit project [project] [flags]
Examples
# Edit projects
mani edit project
# Edit project <project>
mani edit project <project>
Options
-h, --help help for project
edit task
Edit mani task
Synopsis
Edit mani task in $EDITOR.
edit task [task] [flags]
Examples
# Edit tasks
mani edit task
# Edit task <task>
mani edit task <task>
Options
-h, --help help for task
list projects
List projects
Synopsis
List projects.
list projects [projects] [flags]
Examples
# List all projects
mani list projects
# List projects by name
mani list projects <project>
# List projects by tags
mani list projects --tags <tag>
# List projects by paths
mani list projects --paths <path>
# List projects matching a tag expression
mani run <task> --tags-expr '<tag-1> || <tag-2>'
Options
-a, --all select all projects (default true)
-k, --cwd select current working directory
--headers strings specify columns to display [project, path, relpath, description, url, tag] (default [project,tag,description])
-h, --help help for projects
-d, --paths strings select projects by paths
-t, --tags strings select projects by tags
-E, --tags-expr string select projects by tags expression
-T, --target string select projects by target name
--tree display output in tree format
Options inherited from parent commands
-o, --output string set output format [table|markdown|html] (default "table")
--theme string set theme (default "default")
list tags
List tags
Synopsis
List tags.
list tags [tags] [flags]
Examples
# List all tags
mani list tags
Options
--headers strings specify columns to display [project, tag] (default [tag,project])
-h, --help help for tags
Options inherited from parent commands
-o, --output string set output format [table|markdown|html] (default "table")
--theme string set theme (default "default")
list tasks
List tasks
Synopsis
List tasks.
list tasks [tasks] [flags]
Examples
# List all tasks
mani list tasks
# List tasks by name
mani list task <task>
Options
--headers strings specify columns to display [task, description, target, spec] (default [task,description])
-h, --help help for tasks
Options inherited from parent commands
-o, --output string set output format [table|markdown|html] (default "table")
--theme string set theme (default "default")
describe projects
Describe projects
Synopsis
Describe projects.
describe projects [projects] [flags]
Examples
# Describe all projects
mani describe projects
# Describe projects by name
mani describe projects <project>
# Describe projects by tags
mani describe projects --tags <tag>
# Describe projects by paths
mani describe projects --paths <path>
# Describe projects matching a tag expression
mani run <task> --tags-expr '<tag-1> || <tag-2>'
Options
-a, --all select all projects (default true)
-k, --cwd select current working directory
-e, --edit edit project
-h, --help help for projects
-d, --paths strings filter projects by paths
-t, --tags strings filter projects by tags
-E, --tags-expr string target projects by tags expression
-T, --target string target projects by target name
Options inherited from parent commands
--theme string set theme (default "default")
describe tasks
Describe tasks
Synopsis
Describe tasks.
describe tasks [tasks] [flags]
Examples
# Describe all tasks
mani describe tasks
# Describe task <task>
mani describe task <task>
Options
-e, --edit edit task
-h, --help help for tasks
Options inherited from parent commands
--theme string set theme (default "default")
tui
TUI
Synopsis
Run TUI
tui [flags]
Examples
# Open tui
mani tui
Options
-h, --help help for tui
-r, --reload-on-change reload mani on config change
--theme string set theme (default "default")
check
Validate config
Synopsis
Validate config.
check [flags]
Examples
# Validate config
mani check
Options
-h, --help help for check
gen
Generate man page
gen
Options
-d, --dir string directory to save manpage to (default "./")
-h, --help help for gen