Add multi-remote support for GitLab (#1)

Co-authored-by: Ryan D McGuire <ryand_mcguire@sweetwater.com>
Reviewed-on: 50W/git-project-manager#1
This commit is contained in:
2024-01-14 15:33:15 +00:00
parent 415290de20
commit b944af140a
27 changed files with 868 additions and 422 deletions

View File

@@ -17,8 +17,8 @@ gpm know that and it'll remember.
The basic workflow looks like this:
1. **Config** -- generate a config file
1. **Cache** -- load your cache to make things super quick
1. project cache has a TTL, or you can load it manually
1. you only need to update it if there are new projects the cache is unaware of
1. **Add** -- find your project, give it any extra aliases you want
1. run `gpm project add` (or `padd` if using the provided shell defaults)
@@ -40,12 +40,15 @@ The basic workflow looks like this:
1. Copy `contrib/gpm_func_omz.zsh` into your `~/.oh-my-zsh/custom/` path, or just source from your bashrc/zshrc
1. Generate config file: `gpm config gen --write`
1. You can run this any time to update settings
1. It will only add one GitLab, so update the file for multiple
1. Run `gpm cache load` (if aliases is in-place, otherwise `gitlab-project-manager cache load`)
### Config Sample
```yaml
gitlabHost: https://gitlab.sweetwater.com
gitlabToken: <your token here>
gitlabs:
- Host: https://gitlab.sweetwater.com
Token: <your token here>
Name: Sweetwater GitLab
logLevel: info
cache:
ttl: 168h
@@ -54,18 +57,22 @@ cache:
```
## TODO
- [ ] Fix initial setup requiring project path, and set https:// as default for gitlab host
- [x] Use multi-gitlab by default in config init
- [x] Update docs for multi-gitlab
- [x] Remove all references to old keys
- [x] Add auto-completion helper for --gitlab flag
- [x] Fix initial setup requiring project path, and set https:// as default for gitlab host
- [ ] Fix NPE when cache is reset or project for whatever reason leaves an orphaned alias
- [ ] Add config setters and getters
- [x] 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
- [x] prevents clobbering cache on a partial update
- [x] 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..)
- [x] Add open command
- [x] config should exist for editor (vim, code, etc..)
- [ ] Update README for shell completion, aliases, usage
- [ ] Add fzf to `plist` / `gpm projects list`
- [x] Add fzf to `plist` / `gpm projects list`
- [ ] Make a Makefile
- [ ] Add git repo status to project go (up-to-date, pending commits, etc..)
- [x] Update `gpm project show` with pterm box like `gpm project list`