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 -
elvish
Elvish = Expressive Programming Language + Versatile Interactive Shell -
go-prompt
Building powerful interactive prompts in Go, inspired by python-prompt-toolkit. -
tcell
Tcell is an alternate terminal package, similar in some ways to termbox, but better in others. -
survey
A golang library for building interactive and accessible prompts with full support for windows and posix terminals. -
cointop
A fast and lightweight interactive terminal based UI application for tracking cryptocurrencies 🚀 -
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. -
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. -
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. -
Git Town
Git workflow automation to keep branches in sync and reduce merge conflicts. -
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
Collect and Analyze Billions of Data Points in Real Time
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)
Interested in managing your servers in a similar way? Checkout sake!
Features
- Clone multiple repositories in one command
- Declarative configuration
- Run custom or ad-hoc commands over multiple repositories
- Flexible filtering
- Customizable theme
- Portable, no dependencies
- Supports auto-completion
Table of Contents
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 MacPorts
sudo port install mani
via Arch
pacman -S mani
via Nix
nix-env -iA nixos.mani
via Go
go get -u github.com/alajmo/mani
Auto-completion is available via mani completion bash|zsh|fish|powershell
and man page via mani gen
.
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 two 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
.
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.
Run Some Commands
# List all projects
$ mani list projects
# Count number of files in each project in parallel
$ mani exec --all --output table --parallel 'find . -type f | wc -l'
Documentation
Checkout the following to learn more about mani:
- [Examples](examples)
- [Config](docs/config.md)
- [Commands](docs/commands.md)
- Changelog
- Roadmap
- [Project Background](docs/project-background.md)
- [Contributing](docs/contributing.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.