From 43342bf858e8776cdd499017b6fa09c654ca2ad1 Mon Sep 17 00:00:00 2001 From: Ryan McGuire Date: Sun, 10 Dec 2023 11:41:08 -0500 Subject: [PATCH] Update README --- README.md | 61 +++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 41 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 3b47dff..7d04eeb 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,5 @@ # GitLab Project Manager -## TODO - -- [ ] Fix NPE when cache is reset or project for whatever reason leaves an orphaned alias -- [ ] Add config setters and getters -- [ ] Add TTL check to cache load, and add -f / --force flag to re-build regardless -- [ ] For each project loaded, check if it is the same, and do nothing - - [ ] prevents clobbering cache on a partial update - - [ ] track loaded projects in []*Project to diff after load - - [ ] should prune missing after the load is complete -- [ ] Add open command - - [ ] config should exist for editor (vim, code, etc..) -- [ ] Update README for shell completion, aliases, usage -- [ ] Make a Makefile -- [ ] Add git repo status to project go (up-to-date, pending commits, etc..) -- [x] Merge aliases together for same project when selecting - - [ ] If after merging there is only one project, go there by default - ## Purpose The goal of this utility is to provide a fuzzy-find method of locating, cloning, @@ -25,8 +8,46 @@ and shortcuts. ## Functionality -### Project Caching +Fuzzy as F_ck. This program will try like hell to help you find a project, +and once you've found it, will remember your preference along with whatever crazy +thing your lizard brain wants to call it. -### Project Aliases +Do you think of a project called terraform as infra-stuff? No problem, just let +gpm know that and it'll remember. + +The basic workflow looks like this: + +1. **Cache** -- load your cache to make things super quick + - project cache has a TTL, or you can load it manually + - you only need to update it if there are new projects the cache is unaware of +2. **Add** -- find your project, give it any extra aliases you want + - run `gpm project add` (or `padd` if using the provided shell defaults) +3. **Go** -- go to your project, fuzzy searching by alias + - clones your project if that's never been done + - the provided `pgo` func makes it easy +4. **Open** -- rather than simply changing directories to a project, open it in your IDE +5. **Manage** -- fine-tune your aliases, making it easy to nail them without fuzzy stuff + - if you are lazy in your aliases, you'll be fuzzy finding a lot + - match your alias exactly (or have only one result) and you go there right away + - positive reinforcement given for solid alias behavior + - manage aliases using `gpm alias add` or `gpm alias delete` +6. **List** -- get a list of your configured projects any time with `plist` +7. **Reward** -- buy the author a beer, because this thing is a time saver + +## TODO + +- [ ] Fix NPE when cache is reset or project for whatever reason leaves an orphaned alias +- [ ] Add config setters and getters +- [ ] Add TTL check to cache load, and add -f / --force flag to re-build regardless +- [ ] For each project loaded, check if it is the same, and do nothing + - [ ] prevents clobbering cache on a partial update + - [ ] track already loaded projects to diff after load + - [ ] should prune missing after the load is complete +- [ ] Add open command + - [ ] config should exist for editor (vim, code, etc..) +- [ ] Update README for shell completion, aliases, usage +- [ ] Make a Makefile +- [ ] Add git repo status to project go (up-to-date, pending commits, etc..) +- [x] Merge aliases together for same project when selecting + - [ ] If after merging there is only one project, go there by default -### Fuzzy All the Things