Home

Awesome

<h1 align="center"><code>mani</code></h1> <div align="center"> <a href="https://github.com/alajmo/mani/releases"> <img src="https://img.shields.io/github/release-pre/alajmo/mani.svg" alt="version"> </a> <a href="https://github.com/alajmo/mani/actions"> <img src="https://github.com/alajmo/mani/workflows/release/badge.svg" alt="build status"> </a> <a href="https://img.shields.io/badge/license-MIT-green"> <img src="https://img.shields.io/badge/license-MIT-green" alt="license"> </a> <a href="https://goreportcard.com/report/github.com/alajmo/mani"> <img src="https://goreportcard.com/badge/github.com/alajmo/mani" alt="Go Report Card"> </a> <a href="https://pkg.go.dev/github.com/alajmo/mani"> <img src="https://pkg.go.dev/badge/github.com/alajmo/mani.svg" alt="reference"> </a> </div> <br> <img src="./res/logo.svg" align="right"/>

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

Interested in managing your servers in a similar way? Checkout sake!

Features

Table of Contents

Installation

Packaging status

mani is available on Linux and Mac, with partial support for Windows.

Auto-completion is available via mani completion bash|zsh|fish|powershell and man page via mani gen.

Building From Source

  1. Clone the repo
  2. Build and run the executable
    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:

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:

License

The MIT License (MIT)

Copyright (c) 2020-2021 Samir Alajmovic