Skip to content

Version manager for binaries that installed via go install command

License

Notifications You must be signed in to change notification settings

developgo/go-binary-version-manager

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-binary-version-manager (gbvm)

Version manager for go libraries, currently golangci-lint and mockery support. Other libraries can be added easily.

🔨Build And Test

Go Report Card

Motivation

The projects I worked on used different versions of the golangci-lint and mockery libraries. When I use their commands, inconsistent, strange errors occur. I am aiming to solve this problem by writing a basic binary manager that uses symlink under the hood. This project infra is easy to extend for other libraries too :)

Note: Executable binaries must be within ($GOPATH/go/bin) before using gbvm. For example, if you installed golangci-lint via homebrew, you need to delete it first. You should install with gbvm install command.

Demo

asciicast

Installation

via Brew

brew install abdulsametileri/tap/gbvm

via Golang

go install github.com/Abdulsametileri/go-binary-version-manager@latest

After installing go command, the binary artifact name is go-binary-version-manager, you can rename it like

mv $GOPATH/bin/go-binary-version-manager $GOPATH/bin/gbvm

or

mv $HOME/go/bin/go-binary-version-manager $HOME/go/bin/gbvm

Behind the scenes

behind-the-scenes.png

Commands

Command Explanation Example
gbvm listall $LIBRARY it lists all installed versions of the given library gbvm listall mockery
gbvm enable $LIBRARY@$VERSION it enables given version of the library gbvm enable [email protected]
gbvm install $LIBRARY@VERSION it installs given version of the library gbvm install [email protected]
gbvm uninstall $LIBRARY@VERSION it uninstalls given version of the library gbvm uninstall [email protected]

Having issue

Enable logs

You can enable debug logs via -v=5
    
gbvm enable [email protected] -v=5
    
PanicLevel (0), Fatal (1), Error (2)
Warn (3), Info (4), Debug (5), Trace (6)

Check your zshrc/bashrc

This library heavily used `go env GOPATH`, please check
export PATH=$PATH:$(go env GOPATH)/bin
defined your zshrc/bashrc

TODO

  • e2e test like vx

About

Version manager for binaries that installed via go install command

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 97.7%
  • Makefile 2.3%