Description
mani is a tool that helps you manage multiple repositories. It's helpful when you are working with microservices or multi-project system and libraries and want a central place for pulling all repositories and running commands over the different projects. You specify projects and commands in a yaml config and then run the commands over all or a subset of the projects.
mani alternatives and similar packages
Based on the "Command Line" category.
Alternatively, view mani alternatives based on common mentions on social networks and blogs.
-
urfave/cli
A simple, fast, and fun package for building command line apps in Go -
Rich Interactive Widgets for Terminal UIs
Terminal UI library with rich, interactive widgets — written in Golang -
go-prompt
Building powerful interactive prompts in Go, inspired by python-prompt-toolkit. -
elvish
Elvish = Expressive Programming Language + Versatile Interactive Shell -
tcell
Tcell is an alternate terminal package, similar in some ways to termbox, but better in others. -
cointop
A fast and lightweight interactive terminal based UI application for tracking cryptocurrencies 🚀 -
progressbar
A really basic thread-safe progress bar for Golang applications -
The Platinum Searcher
A code search tool similar to ack and the_silver_searcher(ag). It supports multi platforms and multi encodings. -
pterm
✨ #PTerm is a modern Go module to easily beautify console output. Featuring charts, progressbars, tables, trees, text input, select menus and much more 🚀 It's completely configurable and 100% cross-platform compatible. -
pflag
Drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags. -
readline
Readline is a pure go(golang) implementation for GNU-Readline kind library -
asciigraph
Go package to make lightweight ASCII line graph ╭┈╯ in command line apps with no other dependencies. -
dotenv-linter
⚡️Lightning-fast linter for .env files. Written in Rust 🦀 -
CLI Color
🎨 Terminal color rendering library, support 8/16 colors, 256 colors, RGB color rendering output, support Print/Sprintf methods, compatible with Windows. GO CLI 控制台颜色渲染工具库,支持16色,256色,RGB色彩渲染输出,使用类似于 Print/Sprintf,兼容并支持 Windows 环境的色彩渲染 -
flaggy
Idiomatic Go input parsing with subcommands, positional values, and flags at any position. No required project or package layout and no external dependencies. -
uitable
A go library to improve readability in terminal apps using tabular data -
termtables
A Go port of the Ruby library terminal-tables for simple ASCII table generation as well as providing markdown and HTML output -
chalk
Intuitive package for prettifying terminal/console output. http://godoc.org/github.com/ttacon/chalk
Less time debugging, more time building
Do you think we are missing an alternative of mani or a related project?
Popular Comparisons
README
Mani
mani
is a CLI tool that helps you manage multiple repositories. It's useful when you are working with microservices, multi-project systems, many libraries or just a bunch of repositories and want a central place for pulling all repositories and running commands over them.
You specify repository and commands in a config file and then run the commands over all or a subset of the repositories.
[demo](res/output.gif)
Features
- Clone multiple repositories in one command
- Declarative configuration
- Run custom or ad-hoc commands over multiple repositories
- Flexible filtering
- Portable, no dependencies
- Supports auto-completion
Table of Contents
- Installation
- Usage
- [Contributing](/_site/docs/contributing.md)
- License
Installation
mani
is available on Linux and Mac, with partial support for Windows.
Binaries are available on the release page
via cURL (Linux & macOS)
curl -sfL https://raw.githubusercontent.com/alajmo/mani/main/install.sh | sh
via Homebrew
brew tap alajmo/mani brew install mani
via Arch
pacman -S mani
via Go
go get -u github.com/alajmo/mani
Auto-completion is available via mani completion bash|zsh|fish|powershell
.
Building From Source
- Clone the repo
- Build and run the executable
sh make build && ./dist/mani
Usage
Create a New Mani Repository
Run the following command inside a directory containing your git
repositories:
$ mani init
This will generate three files:
mani.yaml
: contains projects and custom tasks. Any sub-directory that has a.git
inside it will be included (add the flag--auto-discovery=false
to turn off this feature).gitignore
: includes the projects specified inmani.yaml
file. To opt out, usemani init --vcs=none
.$HOME/.config/mani/config.yaml
: empty config file where you can place default themes, specs and targets. To change the base directory, run allmani
with the flag--user-config-dir <custom-path>
It can be helpful to initialize the mani
repository as a git repository so that anyone can easily download the mani
repository and run mani sync
to clone all repositories and get the same project setup as you.
Common Commands
# Run arbitrary command (list all files for instance)
mani exec --all 'ls -alh'
# List all repositories
mani list projects
# List repositories in a tree format
mani list projects --tree
# Describe available tasks
mani describe tasks
# Run task for projects that have the frontend tag
mani run list-files --tags frontend
# Run task for projects under a specific directory
mani run list-files --paths work
# Run task for specific project
mani run list-files --project project-a
# Open up mani.yaml in your preferred editor
mani edit
Documentation
Checkout the following to learn more about mani:
- [Examples](_example)
- [Documentation](_site/docs/config.md)
- [Changelog](/_site/docs/changelog.md)
- [Project Background](_site/docs/project-background.md)
[License](LICENSE)
The MIT License (MIT)
Copyright (c) 2020-2021 Samir Alajmovic
*Note that all licence references and agreements mentioned in the mani README section above
are relevant to that project's source code only.