Popularity
6.1
Growing
Activity
4.3
-
423
7
23

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

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

Packaging status

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

  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 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 in mani.yaml file. To opt out, use mani 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.