• Stars
    star
    437
  • Rank 99,641 (Top 2 %)
  • Language
    Go
  • License
    MIT License
  • Created about 5 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

๐Ÿค– CLI tool to help you manage repositories

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

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 (AUR)

    yay -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
    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:

The MIT License (MIT)

Copyright (c) 2020-2021 Samir Alajmovic