Popularity
5.7
Growing
Activity
8.1
Growing
301
5
11

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.

Programming language: Go
License: MIT License
Tags: Utilities     Productivity     Command Line     Configuration     CLI     Golang     Yaml    
Latest version: v0.5.0

mani alternatives and similar packages

Based on the "Command Line" category.
Alternatively, view mani alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of mani or a related project?

Add another 'Command Line' Package

README

Build Status Release License Go Report Card

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

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

  1. Clone the repo
  2. 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 in mani.yaml file. To opt out, use mani 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 all mani 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.