gstats — command line tool to print a developer handy summary of all git repositories below current directory

Overview

crates.io

gstats

Simple Rust tool to get quick summary info on git repos showing latest tag, branch, state. I implemented this to help me work with a the not too small number of repositories as a result of Microservices.

It basically shows information similar to those running "gst" on zsh using the git plugin, just for all immediate sub dirs.

The secondary reason is of course for me to try out Rust. So, please do critique or suggest improvement for the code.

Legend

**** Has uncommited changes.

?!?! Has no origin/out-of-sync with origin.

Installation

Install using Rust Cargo.

cargo install gstats

Sample

~/Apps ⌚ 12:22:14
$ time gstats
Base Dir: .
Stats of ./noiseclean [master @ N/A]: 
Stats of ./systemd-vmware [master @ N/A]: 
Stats of ./jEdit-Rust [master @ N/A]: 
Stats of ./WSWireLib [master @ N/A]: 
Stats of ./signal-reset [master @ N/A]: 
Stats of ./li3_loggr [master @ N/A]: 
Stats of ./li3_partials [master @ N/A]: 
Stats of ./KickassTorrentsAPI [master @ N/A]: 
Stats of ./convert-document [master @ 1.4.0]: 
Stats of ./baidupan [master @ N/A]: 
Stats of ./mimipenguin [master @ N/A]: 
Stats of ./khttp [master @ 0.1.0]: 
Stats of ./DeepFaceLab [master @ N/A]: 
Stats of ./sidewinderd [master @ 0.4.1]: 
Stats of ./json [master @ 9.0.6]: 
Stats of ./micropolis [master @ N/A]: 
Stats of ./Pyrit [master @ v0.5.0]: 
Stats of ./parallel [master @ 0.11.3]: 
Stats of ./Exposed [master @ 0.13.6]: 
Stats of ./miraclecast [master @ v1.0]: 
Stats of ./nimble [master @ v0.9.0]: 
Stats of ./gradle-appengine-plugin [master @ gradle-appengine-plugin-1.9.59]: 
**** Stats of ./OpenCL-Gaussian-Blur [master @ N/A]: 
**** Stats of ./SolidOak [master @ 0.1.3]: 
Stats of ./grive2 [master @ v0.5.0]: 
**** Stats of ./openfortigui [master @ v0.7.3.1]: 
Stats of ./ripgrep [master @ 11.0.1]: 
Stats of ./getting-started-java [master @ N/A]: 
Stats of ./spring-data-jpa [master @ 2.2.0.M3]: 
Stats of ./bdr-plugin [bdr-plugin/REL0_9_STABLE @ bdr-plugin/0.9.3-2]: 
Stats of ./dex2jar [2.x @ 2.1-nightly-28]: 
Stats of ./Aporia [master @ v0.4.2]: 
Stats of ./http4k [master @ N/A]: 
Stats of ./spring-data-commons [master @ 2.2.0.M3]: 
**** Stats of ./Nim [version-1-0 @ v1.0.0]: 
Stats of ./spring-security-oauth [master @ 2.3.5.RELEASE]: 
Stats of ./karate [master @ v0.9.2]: 
?!?! Stats of ./liteide [master @ x30.2]: 
Stats of ./youtube-dl [master @ 2019.09.01]: 
Stats of ./nerd-fonts [master @ v2.0.0]: 
Stats of ./neovim [master @ nightly]: 
Stats of ./hibernate-orm [master @ 5.4.2]: 
Stats of ./postgresql-bdr [bdr-pg/REL9_4_STABLE @ bdr-pg/REL9_4_6-1]: 
Stats of ./openapi-generator [master @ v4.1.1]: 
gstats  1.02s user 0.42s system 286% cpu 0.502 total

You might also like...
Gix is a command-line interface (CLI) to access git repositories

gix is a command-line interface (CLI) to access git repositories. It's written to optimize the user-experience, and perform as good or better than the

below is an interactive tool to view and record historical system data.
below is an interactive tool to view and record historical system data.

A time traveling resource monitor for modern Linux systems

Dead simple, memoized cargo subcommand to hoist cargo-built binaries into the current working directory, written in Rust.
Dead simple, memoized cargo subcommand to hoist cargo-built binaries into the current working directory, written in Rust.

cargo-hoist Dead simple cargo subcommand to hoist cargo-built binaries into scope. stable Install | User Docs | Crate Docs | Reference | Contributing

A small tool to clone git repositories to a standard location, organised by domain name and path.

A small tool to clone git repositories to a standard location, organised by domain name and path. Runs on BSD, Linux, macOS, Windows, and more.

A tool to dump exposed .git repositories

git-dumper This repository houses a tool to dump exposed .git repositories. This is a rewrite from the original GitTools's Dumper project, but in a re

A tool to dump exposed .git repositories

git-dumper This repository houses a tool to dump exposed .git repositories. This is a rewrite from the original GitTools's Dumper project, but in a re

 🚩 Show sensitive command summary when open a new terminal
🚩 Show sensitive command summary when open a new terminal

🚩 Show sensitive command summary when open a new terminal 👀 Clear sensitive commands from shell history 🙈 Stash your history command before present

CLI tool for generating a summary of recent github activity for people who are incredibly forgetful

CLI tool for generating a summary of recent github activity for people who are incredibly forgetful but still need to give weekly status updates to their boss without getting depressed and convincing themselves they did nothing because they can't remember what they did!

Print your git contributions in your terminal, blazingly fast
Print your git contributions in your terminal, blazingly fast

Takoyaki Blazingly fast git contribution graph in your terminal Features ✔️ Customizable ✔️ Plugins to support a bunch of cloud based git repositories

gfold is a CLI-driven application that helps you keep track of multiple Git repositories.

gfold is a CLI-driven application that helps you keep track of multiple Git repositories.

Check a folder for dirty git repositories, forgotten branches and commits

dg - find dirty git repos Ever forgot to push a commit or lost your work because you assumed it was pushed to Github but it wasn't? dg finds local git

Mount portable directory as consistent user directory.
Mount portable directory as consistent user directory.

PortableDesktop Mount portable directory as consistent user directory. PortableDesktopCli help PortableDesktopCli [options] Target Path Link Path

Generate SUMMARY.md files based on your book's file structure

mdbook-autosummary Generate a SUMMARY.md for your mdBook based on your folder structure! Warning The implementation is hacky and has several limitatio

Retrieve all requested SBOMs from the GitHub repositories.

GitHub SBOM(s) Generator Action This GitHub Action and/or standalone CLI application generates a Software Bill of Materials (SBOM) for a given GitHub

A simple tool to clean all projects in a directory.

Cargo Cleanall A simple tool to clean all cargo projects in a directory. Help Cargo plugin to clean all cargo projects in a directory Usage: cargo cl

A git sub-command to view your git repository in the web browser
A git sub-command to view your git repository in the web browser

git-view A git sub-command to view your git repository in the web browser! About Are you also frustrated from moving your hands away from the keyboard

A simple command line program to upload file or directory to web3.storage with optional encryption and compression
A simple command line program to upload file or directory to web3.storage with optional encryption and compression

w3s-cli A simple command line program to upload file or directory to web3.storage with optional encryption and compression. Features Uploads single fi

A Rust CLI tool that helps you enforce Git policies through Git hooks both server and client side

GitPolicyEnforcer This is a command line utility written in Rust, that helps you utilize Git hooks, to enforce various policies. It currently supports

Comments
  • Panic from child threads

    Panic from child threads

    The main thread went thread 'main' panicked at 'oops! the child thread panicked: Any', src/libcore/result.rs:1165:5 and I had several like the following: thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: Error { code: -9, klass: 4, message: "reference \'refs/heads/master\' not found" }', src/libcore/result.rs:1165:5

    opened by palfrey 3
  • No helptext/panic when passing -h or --help

    No helptext/panic when passing -h or --help

    I tried to check what other flags this application supported and it crashed.

    $ gstats --help
    Base Dir: --help
    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "No such file or directory" }', /home/evan/.cargo/registry/src/github.com-1ecc6299db9ec823/gstats-0.1.4/src/main.rs:85:39
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    
    opened by evan-chaney 0
Owner
Boon at Shift
Boon at Shift
Generate beautiful changelogs from your Git commit history

clog-cli A conventional changelog for the rest of us About clog creates a changelog automatically from your local git metadata. See the clogs changelo

Clog 776 Dec 30, 2022
The Git Commit Message and Changelog Generation Framework :book:

git-journal ?? The Git Commit Message and Changelog Generation Framework Table of contents: TL;DR Installation Usage Default output Template output Co

Sascha Grunert 551 Jan 4, 2023
A parallel universal-ctags wrapper for git repository

ptags A parallel universal-ctags wrapper for git repository Description ptags is a universal-ctags wrapper to have the following features. Search git

null 107 Dec 30, 2022
Git mirroring daemon

lohr lohr is a Git mirroring tool. I created it to solve a simple problem I had: I host my own git server at https://git.alarsyo.net, but want to mirr

Antoine Martin 29 Dec 3, 2022
🧑🏻‍⚕️ Command-line utility which poll on remote addresses in order to perform status checks periodically

ナース (Nāsu) ????‍⚕️ Command-line utility which poll on remote addresses in order to perform status checks periodically Motivation Nāsu (from Japanese ナ

Esteban Borai 13 Nov 14, 2021
🤖 Just a command runner

just just is a handy way to save and run project-specific commands. (非官方中文文档,这里,快看过来!) Commands, called recipes, are stored in a file called justfile

Casey Rodarmor 8.2k Jan 8, 2023
Cargo command to create the README.md from your crate's documentation

Cargo rdme Cargo command to create your README from your crate’s documentation. Installation You can install cargo rdme with cargo by running cargo in

Diogo Sousa 42 Dec 24, 2022
The open source design documentation tool for everybody

Heads up: reimagining artifact 3.0, check it out at artifact_py Artifact: design documentation for everybody Note: this project, and the python re-wri

Rett Berg 564 Nov 15, 2022
A tool that uses the credentials stored in 1password as an environment variable.

openv A tool that uses the credentials stored in 1password as an environment variable. Requirements 1password command-line tool Getting Started # Sign

mrtc0 31 Nov 10, 2022
A command-line tool and Docker image to automatically backup Git repositories from GitHub or anywhere

A command-line tool and Docker image to automatically backup Git repositories from GitHub or anywhere

Jake Wharton 256 Dec 27, 2022