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.
-
Rich Interactive Widgets for Terminal UIs
Terminal UI library with rich, interactive widgets — written in Golang -
tcell
Tcell is an alternate terminal package, similar in some ways to termbox, but better in others. -
survey
DISCONTINUED. A golang library for building interactive and accessible prompts with full support for windows and posix terminals. -
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. -
cointop
DISCONTINUED. A fast and lightweight interactive terminal based UI application for tracking cryptocurrencies 🚀 -
The Platinum Searcher
A code search tool similar to ack and the_silver_searcher(ag). It supports multi platforms and multi encodings. -
asciigraph
Go package to make lightweight ASCII line graph ╭┈╯ in command line apps with no other dependencies. -
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 环境的色彩渲染 -
go-size-analyzer
A tool for analyzing the size of compiled Go binaries, offering cross-platform support, detailed breakdowns, and multiple output formats.
InfluxDB - Purpose built for real-time analytics at any scale.
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.