Skip to main content

Commands

mani

repositories manager and task runner

Synopsis

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.

Options

  -c, --config string        specify config
  -h, --help                 help for mani
      --no-color             disable color
  -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

  # 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

Options

  -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

exec

Execute arbitrary commands

Synopsis

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]

Examples

  # 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"'

Options

  -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")

init

Initialize a mani repository

Synopsis

Initialize a mani repository.

Creates a mani repository - a directory with config file mani.yaml and a .gitignore file.

init [flags]

Examples

  # Basic example
  mani init

  # Skip auto-discovery of projects
  mani init --auto-discovery=false

  # Skip creation of .gitignore file
  mani init --vcs=none

Options

      --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")

sync

Clone repositories and add them to gitignore

Synopsis

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]

Examples

  # Clone repositories one at a time
  mani sync

  # Clone repositories in parallell
  mani sync --parallel

  # Show cloned projects
  mani sync --status

Options

  -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

edit

Open up mani config file in $EDITOR

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

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

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 <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>

Options

      --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

Options inherited from parent commands

  -o, --output string   set output [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   set headers. Available headers: tag, project (default [tag,project])
  -h, --help              help for tags

Options inherited from parent commands

  -o, --output string   set output [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 task <task>
  mani list task <task>

Options

      --headers strings   set headers. Available headers: task, description (default [task,description])
  -h, --help              help for tasks

Options inherited from parent commands

  -o, --output string   set output [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 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>

Options

  -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

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

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