Skip to main content

Examples

This is an example of how you can use mani. Simply save the following content to a file named mani.yaml and then run mani sync to clone all the repositories. If you already have your own repositories, just omit the projects section.

You can then run some of the commands or checkout git-quick-stats.sh for additional git statistics and run them via mani for multiple projects.

Config

projects:
example:
path: .
desc: A mani example

pinto:
path: frontend/pinto
url: https://github.com/alajmo/pinto.git
desc: A vim theme editor
tags: [frontend, node]

dashgrid:
path: frontend/dashgrid
url: https://github.com/alajmo/dashgrid.git
desc: A highly customizable drag-and-drop grid
tags: [frontend, lib, node]

template-generator:
url: https://github.com/alajmo/template-generator.git
desc: A simple bash script used to manage boilerplates
tags: [cli, bash]
env:
branch: master

specs:
custom:
output: table
parallel: true

targets:
all:
all: true

themes:
custom:
table:
options:
draw_border: true
separate_columns: true
separate_header: true
separate_rows: true

tasks:
git-status:
desc: show working tree status
spec: custom
target: all
cmd: git status -s

git-last-commit-msg:
desc: show last commit
cmd: git log -1 --pretty=%B

git-last-commit-date:
desc: show last commit date
cmd: |
git log -1 --format="%cd (%cr)" -n 1 --date=format:"%d %b %y" \
| sed 's/ //'

git-branch:
desc: show current git branch
cmd: git rev-parse --abbrev-ref HEAD

npm-install:
desc: run npm install in node repos
target:
tags: [node]
cmd: npm install

git-overview:
desc: show branch, local and remote diffs, last commit and date
spec: custom
target: all
theme: custom
commands:
- task: git-branch
- task: git-last-commit-msg
- task: git-last-commit-date

Commands

List all Projects as Table or Tree:

$ mani list projects

Project | Tag | Description
--------------------+---------------------+--------------------------------------------------
example | | A mani example
pinto | frontend, node | A vim theme editor
dashgrid | frontend, lib, node | A highly customizable drag-and-drop grid
template-generator | cli, bash | A simple bash script used to manage boilerplates

$ mani list projects --tree
┌─ frontend
│ ├─ pinto
│ └─ dashgrid
└─ template-generator

Describe Task

$ mani describe task git-overview

Name: git-overview
Description: show branch, local and remote diffs, last commit and date
Theme: custom
Target:
All: true
Cwd: false
Projects:
Paths:
Tags:
Spec:
Output: table
Parallel: true
IgnoreError: false
OmitEmpty: false
Commands:
- git-branch: show current git branch
- git-last-commit-msg: show last commit
- git-last-commit-date: show last commit date

Run a Task Targeting Projects with Tag node and Output Table

$ mani run npm-install --tags node

TASK [npm-install: run npm install in node repos] *********************************

pinto |
pinto | up to date, audited 911 packages in 928ms
pinto |
pinto | 71 packages are looking for funding
pinto | run `npm fund` for details
pinto |
pinto | 15 vulnerabilities (9 moderate, 6 high)
pinto |
pinto | To address issues that do not require attention, run:
pinto | npm audit fix
pinto |
pinto | To address all issues (including breaking changes), run:
pinto | npm audit fix --force
pinto |
pinto | Run `npm audit` for details.

TASK [npm-install: run npm install in node repos] *********************************

dashgrid |
dashgrid | up to date, audited 960 packages in 1s
dashgrid |
dashgrid | 87 packages are looking for funding
dashgrid | run `npm fund` for details
dashgrid |
dashgrid | 14 vulnerabilities (2 low, 2 moderate, 10 high)
dashgrid |
dashgrid | To address all issues possible (including breaking changes), run:
dashgrid | npm audit fix --force
dashgrid |
dashgrid | Some issues need review, and may require choosing
dashgrid | a different dependency.
dashgrid |
dashgrid | Run `npm audit` for details.

Run Custom Command for All Projects

$ mani exec --all --output table --parallel 'find . -type f | wc -l'

Project | Output
--------------------+--------
example | 31016
pinto | 14444
dashgrid | 16527
template-generator | 42