{"id":45821169,"url":"https://github.com/robin-mbg/may","last_synced_at":"2026-02-26T20:51:25.156Z","repository":{"id":57644666,"uuid":"250893266","full_name":"robin-mbg/may","owner":"robin-mbg","description":"CLI tool to easily list and manage git repositories all across your system.","archived":false,"fork":false,"pushed_at":"2020-10-10T17:03:04.000Z","size":117,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-06-20T12:52:16.738Z","etag":null,"topics":["cli","git","shell-scripting"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/robin-mbg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-03-28T21:04:39.000Z","updated_at":"2022-06-29T21:08:51.000Z","dependencies_parsed_at":"2022-08-30T08:11:46.795Z","dependency_job_id":null,"html_url":"https://github.com/robin-mbg/may","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/robin-mbg/may","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robin-mbg%2Fmay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robin-mbg%2Fmay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robin-mbg%2Fmay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robin-mbg%2Fmay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/robin-mbg","download_url":"https://codeload.github.com/robin-mbg/may/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robin-mbg%2Fmay/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29872659,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-26T18:42:30.764Z","status":"ssl_error","status_checked_at":"2026-02-26T18:41:47.936Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","git","shell-scripting"],"created_at":"2026-02-26T20:51:24.641Z","updated_at":"2026-02-26T20:51:25.150Z","avatar_url":"https://github.com/robin-mbg.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# May CLI\n[![GoReport](https://goreportcard.com/badge/github.com/robin-mbg/may)](https://goreportcard.com/report/github.com/robin-mbg/may) [![Maintainability](https://api.codeclimate.com/v1/badges/97837968b23cc6ef9da6/maintainability)](https://codeclimate.com/github/robin-mbg/may/maintainability) [![CircleCI](https://circleci.com/gh/robin-mbg/may.svg?style=shield)](https://circleci.com/gh/robin-mbg/may) ![GitHub](https://img.shields.io/github/license/robin-mbg/may)\n\npacman-inspired tool to easily list and manage git repositories all across your system. It was created to ease the pain of managing an ever-increasing number of repositories and allow easy access to any of them, no matter the directory your shell happens to be in. `may` is also designed to be easily integrated into shell scripts dealing with repositories.\n\n## Installation\n\n`may` is available either as a binary for download or as an AUR package for Arch-based distributions - or just build it yourself.\n\nFor detailed instruction see `/doc/Install.md` or click [here](doc/Install.md).\n\n## Features\n\n- Get a list of all git repositories on your system (plain `may`)\n- Get a filtered list of your repositories (`may -f \u003csubpath\u003e`)\n- Run build tools on repository selection from one central place (`may -R` / `may -Rf \u003csubpath\u003e`)\n- View all repositories and check their status (`may -S`)\n- Update all your git repositories from one central command-line interface (`may -U`)\n- Use `may` in pipes to receive or send git repository lists (e.g. `may | fzf | may -U`)\n\nAvailable operations:\n\n```\nmay                 # Lists all repositories available in your home directory\nmay -R              # `Run`: Runs a build-tool command on an auto-detected build tool. Takes a required positional argument at the end.\nmay -I              # `Inspect`: Shows commands available for a repository from auto-detected build tool\nmay -S              # `Status`: Runs `git status` on all repositories may can find\nmay -U              # `Update`: Allows updating (aka pulling) all repositories at once\n\nmay -V              # `Version`: (Helper) Prints the version of `may` currently in use\nmay --help          # `Help`: (Helper) Prints helpful information\n```\n\nOptions:\n```\nmay -d \u003cpath\u003e       # `--directory`: Specify path that should be searched (overrides MAY_BASEPATH env variable, default $HOME + WSL mounted user directory if available)\nmay -f \u003csubstring\u003e  # `--filter`: Filter repository path list by the given substring\nmay -v              # `--verbose`: Verbose output\nmay -a              # `--all`: All directories are searched, including dotfiles and uncommon directories such as $HOME/Pictures\n```\n\nEvery call to `may` can consist of 0..1 operations and 0..n options. This means that all of the following are permitted: `may`, `may -Uvf subpath`, `may -Iv`, `may -vI`. The following are NOT permitted: `may -IU`, `may --U`.\n\n### Viewing repositories: `may`, `may -S` (Status) , `may -I` (Inspect)\n\nIn order to view all repositories available in your home directory, simply run:\n\n```sh\nmay\n```\nIn order to check the state of all those repositories, use:\n\n```sh\nmay -S\n```\nBehind the scenes, this asynchronously executes `git status -sb` for all repositories.\n\nTo inspect your repositories further and see which build tools may would be able to use when running `may -R`, use:\n\n```sh\nmay -I\n```\nThe inspection output is very useful for writing scripts. Aside from possible command runners available to `may`, the output also contains information regarding the date of the latest commit and the repository shortname.\n\n### Updating repositories: `may -U` (Update)\n\nTo pull updates for all repositories, run:\n```sh\nmay -U\n```\nTo, for example, only update `vim` plugins, the following are two handy variant:\n```sh\nmay -Uaf \".vim\" // Update all with filter .vim\nmay -Uad $HOME/.vim // Update all in directory $HOME/.vim\n```\n\n### Running in repositories: `may -R` (Run)\n\nThis is very useful to execute build and run commands on multiple or distant repositories. It is recommended to only use this command in combination with a strict filter (`-f \u003csubpath\u003e`) as, e.g., building a large number of repositories can be an extremely lengthy task.\n\n```sh\nmay -Rf \u003crepositorypath\u003e \u003ctask\u003e\n```\n\nThe `\u003ctask\u003e` and other following parameters are forwarded to an auto-selected build tool. In order to find out which build tool would be selected, use `may -I`. It is recommended to add a `Makefile` to your project to concretely define available tasks.\n\nCurrently supported are the following tools:\n\n- make (highest priority)\n- gradle\n- npm\n- yarn\n\nLimited/Beta support is available for these tools:\n\n- Docker\n- go\n\nNote that by adding a `Makefile`, any command/build tool is easily supported.\n\n### Help: `may --help`, `may -V` (Version)\n\nTwo helper commands are available, `may --help` to view a short list of generally available commands and `may -V` to check which version you are currently using.\n\n## Customizing\n\nPer default, `may` uses the entire content in `$HOME` for its find operations. You can change this behaviour by setting `MAY_BASEPATH` to your chosen path.\n\n## Scripting\n\n`may` can read paths from `stdin` that then replace the default list of available git repositories. Its output can also easily be used in standard commands such as `awk`, `grep`, ...\n\nThe following is a very simple, `fzf`-based example to have a multi-select of git repositories to pull.\n\n```sh\nmay | fzf -m | may -U\n```\n\nThe following builds all `gradle` projects on your system, making use of the responsible `gradlew` in each repository.\n\n```sh\nmay -I | grep \"gradle\" | awk '{ print $1 }' | may -R build\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobin-mbg%2Fmay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobin-mbg%2Fmay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobin-mbg%2Fmay/lists"}