mani

command module
v0.25.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 7, 2023 License: MIT Imports: 1 Imported by: 0

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

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

License

The MIT License (MIT)

Copyright (c) 2020-2021 Samir Alajmovic

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Source: https://github.com/goware/prefixer Author: goware
Source: https://github.com/goware/prefixer Author: goware
dao

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL