repositories manager and task runner
mani is a CLI tool that helps you manage multiple repositories.
It's useful when you want a central place for pulling all repositories and running commands over them.
You specify repository and tasks in a config file and then run the commands over all or a subset of the repositories.
-c, --config string specify config
-h, --help help for mani
--no-color disable color
-u, --user-config string specify user config
Run tasks
Run tasks.
The tasks are specified in a mani.yaml file along with the projects you can target.
run <task>
# Run task <task> for all projects
mani run <task> --all
# Run task <task> for all projects <project>
mani run <task> --projects <project>
# Run task <task> for all projects that have tags <tag>
mani run <task> --tags <tag>
# Run task <task> for all projects matching paths <path>
mani run <task> --paths <path>
# Run task <task> and pass in env value from shell
mani run <task> key=value
-a, --all target all projects
-k, --cwd current working directory
--describe print task information
--dry-run prints the task to see what will be executed
-e, --edit edit task
-h, --help help for run
--ignore-errors ignore errors
--ignore-non-existing ignore non-existing projects
--omit-empty omit empty results
-o, --output string set output [text|table|html|markdown]
--parallel run tasks in parallel for each project
-d, --paths strings target projects by paths
-p, --projects strings target projects by names
-s, --silent do not show progress when running tasks
-t, --tags strings target projects by tags
--theme string set theme
Execute arbitrary commands
Execute arbitrary commands.
Single quote your command if you don't want the file globbing and environments variables expansion to take place before the command gets executed in each directory.
exec <command> [flags]
# List files in all projects
mani exec --all ls
# List git files that have markdown suffix for all projects
mani exec --all 'git ls-files | grep -e ".md"'
-a, --all target all projects
-k, --cwd current working directory
--dry-run prints the command to see what will be executed
-h, --help help for exec
--ignore-errors ignore errors
--ignore-non-existing ignore non-existing projects
--omit-empty omit empty results
-o, --output string set output [text|table|markdown|html]
--parallel run tasks in parallel for each project
-d, --paths strings target projects by paths
-p, --projects strings target projects by names
-s, --silent do not show progress when running tasks
-t, --tags strings target projects by tags
--theme string set theme (default "default")
Initialize a mani repository
Initialize a mani repository.
Creates a mani repository - a directory with config file mani.yaml and a .gitignore file.
init [flags]
# Basic example
mani init
# Skip auto-discovery of projects
mani init --auto-discovery=false
# Skip creation of .gitignore file
mani init --vcs=none
--auto-discovery walk current directory and add git repositories to mani.yaml (default true)
-h, --help help for init
--vcs string initialize directory using version control system. Acceptable values: <git|none> (default "git")
Clone repositories and add them to gitignore
Clone repositories and add them to gitignore. In-case you need to enter credentials before cloning, run the command without the parallel flag.
sync [flags]
# Clone repositories one at a time
mani sync
# Clone repositories in parallell
mani sync --parallel
# Show cloned projects
mani sync --status
-h, --help help for sync
-p, --parallel clone projects in parallel
-d, --paths strings filter projects by paths
-s, --status print sync status only
-r, --sync-remotes update existing remotes
-t, --tags strings filter projects by tags
Open up mani config file in $EDITOR
Open up mani config file in $EDITOR
edit [flags]
# Edit current context
mani edit
-h, --help help for edit
Edit mani project
Edit mani project
edit project [project] [flags]
# Edit projects
mani edit project
# Edit project <project>
mani edit project <project>
-h, --help help for project
Edit mani task
Edit mani task
edit task [task] [flags]
# Edit tasks
mani edit task
# Edit task <task>
mani edit task <task>
-h, --help help for task
List projects
List projects
list projects [projects] [flags]
# List all projects
mani list projects
# List projects <project>
mani list projects <project>
# List projects that have tag <tag>
mani list projects --tags <tag>
# List projects matching paths <path>
mani list projects --paths <path>
--headers strings set headers. Available headers: project, path, relpath, description, url, tag (default [project,tag,description])
-h, --help help for projects
-d, --paths strings filter projects by paths
-t, --tags strings filter projects by tags
--tree tree output
-o, --output string set output [table|markdown|html] (default "table")
--theme string set theme (default "default")
List tags
List tags.
list tags [tags] [flags]
# List all tags
mani list tags
--headers strings set headers. Available headers: tag, project (default [tag,project])
-h, --help help for tags
-o, --output string set output [table|markdown|html] (default "table")
--theme string set theme (default "default")
List tasks
List tasks.
list tasks [tasks] [flags]
# List all tasks
mani list tasks
# List task <task>
mani list task <task>
--headers strings set headers. Available headers: task, description (default [task,description])
-h, --help help for tasks
-o, --output string set output [table|markdown|html] (default "table")
--theme string set theme (default "default")
Describe projects
Describe projects.
describe projects [projects] [flags]
# Describe all projects
mani describe projects
# Describe project <project>
mani describe projects <project>
# Describe projects that have tag <tag>
mani describe projects --tags <tag>
# Describe projects matching paths <path>
mani describe projects --paths <path>
-e, --edit edit project
-h, --help help for projects
-d, --paths strings filter projects by paths
-t, --tags strings filter projects by tags
Describe tasks
Describe tasks.
describe tasks [tasks] [flags]
# Describe all tasks
mani describe tasks
# Describe task <task>
mani describe task <task>
-e, --edit edit task
-h, --help help for tasks
Validate config
Validate config.
check [flags]
# Validate config
mani check
-h, --help help for check
Generate man page
gen
-d, --dir string directory to save manpage to (default "./")
-h, --help help for gen