2.4 KiB
2.4 KiB
GitLab Project Manager
Purpose
The goal of this utility is to provide a fuzzy-find method of locating, cloning, and using GitLab projects -- along with your preferred aliases, autocompletion, and shortcuts.
Functionality
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.
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:
- 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
- Add -- find your project, give it any extra aliases you want
- run
gpm project add
(orpadd
if using the provided shell defaults)
- 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
- the provided
- Open -- rather than simply changing directories to a project, open it in your IDE
- 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
orgpm alias delete
- List -- get a list of your configured projects any time with
plist
- 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..)
- Merge aliases together for same project when selecting
- If after merging there is only one project, go there by default