managers
A Go library that wraps package manager CLIs behind a common interface. Translates generic operations (install, add, remove, update) into the correct commands for each package manager.
import (
"github.com/git-pkgs/managers"
"github.com/git-pkgs/managers/definitions"
)
defs, _ := definitions.LoadEmbedded()
translator := managers.NewTranslator()
for _, def := range defs {
translator.Register(def)
}
// Same operation, different managers
cmd, _ := translator.BuildCommand("npm", "add", managers.CommandInput{
Args: map[string]string{"package": "lodash"},
Flags: map[string]any{"dev": true},
})
// Result: ["npm", "install", "lodash", "--save-dev"]
cmd, _ = translator.BuildCommand("bundler", "add", managers.CommandInput{
Args: map[string]string{"package": "rails"},
Flags: map[string]any{"dev": true},
})
// Result: ["bundle", "add", "rails", "--group", "development"]Supported package managers
npm, pnpm, yarn, bun, deno, bundler, gem, cargo, gomod, pip, uv, poetry, conda, renv, composer, mix, rebar3, pub, cocoapods, swift, nuget, maven, gradle, sbt, cabal, stack, opam, luarocks, nimble, shards, cpanm, lein, vcpkg, conan, helm, brew.
Operations
| Operation | Description |
|---|---|
init | Initialise a new project manifest |
install | Install dependencies from lockfile |
add | Add a new dependency |
remove | Remove a dependency |
list | List installed packages |
outdated | Show packages with available updates |
update | Update dependencies |
path | Get filesystem path to installed package |
resolve | Print the resolved dependency tree |
Installation
go get github.com/git-pkgs/managers