30 lines
1.2 KiB
Markdown
30 lines
1.2 KiB
Markdown
|
# GPM
|
||
|
|
||
|
Go Package Mapping
|
||
|
|
||
|
### Motivation
|
||
|
|
||
|
I personally use a lot of nice libraries in Go, but every time I start a new project I have to go hunting for import paths again!
|
||
|
|
||
|
Enter GPM, a glorified mapping of simple names to go-get imports.
|
||
|
|
||
|
For example, I use [urfave/cli](https://github.com/urfave/cli) for all of my CLI projects. I've used it enough times to remember the import path, but let's say I didn't.
|
||
|
Using either a GPM server or local config, I can instead `gpm get cli` which finds `cli` in my map and runs `go get github.com/urfave/cli/v2`.
|
||
|
|
||
|
### Commands
|
||
|
|
||
|
* `add` - Add a local package
|
||
|
* `remove` - Remove a local package
|
||
|
* `list` - List local packages
|
||
|
* `config` - Change local configuration (GPM server)
|
||
|
* `export` - Export local packages to JSON
|
||
|
* `import` - Import JSON to local packages
|
||
|
|
||
|
|
||
|
### Server
|
||
|
|
||
|
If GPM doesn't find a package locally, it can call out to a configurable [gpm server](https://gitea.com/jolheiser/gpm-server) to find a package there.
|
||
|
This makes it much simpler to have a central library of packages rather than exporting and importing between environments.
|
||
|
|
||
|
The `import` and `export` commands should work between the CLI and server for easy transitions.
|