Skip to content
This repository has been archived by the owner on May 11, 2022. It is now read-only.
/ egg Public archive

🐣 egg - extended go get - alternative for the standard `go get` with a few little but useful features.

License

Notifications You must be signed in to change notification settings

kamilsk/egg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

37 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🐣 egg

Extended go get - alternative for the standard go get with a few little but useful features.

Build Template

πŸ’‘ Idea

$ egg tools  add golang.org/x/tools/cmd/goimports@latest

$ egg binary get github.com/goreleaser/goreleaser@latest

A full description of the idea is available here.

πŸ† Motivation

At Avito, we develop many services written on Go, and many of them use different tools such as easyjson, goimports, mockgen, and others. It isn't effortless to manage all of them through all teams in the company.

I need a tool that helps me to track tool dependencies for services and interact with them.

πŸ€Όβ€β™‚οΈ How to

egg deps

$ egg deps list
> github.com/izumin5210/gex
> github.com/spf13/cobra
> github.com/stretchr/testify
> go.octolab.org/toolkit/cli

$ egg deps check ...

egg tools

$ mkdir tools && cd tools

# init a new toolset
$ go mod init your.module/tools
$ egg tools init

# add golangci-lint to tools.go
$ egg tools add github.com/golangci/golangci-lint/cmd/golangci-lint
# add mockgen to tools.go and build it to bin/mockgen
$ egg tools add --build github.com/golang/mock/mockgen

# install tools to ${GOPATH}/bin
$ export GOBIN="${GOPATH}/bin"
$ go generate tools.go
# do the same thing
$ egg tools install

# list the toolset
$ egg tools list
> mockgen
> golangci-lint

🧩 Installation

Homebrew

$ brew install kamilsk/tap/egg

Binary

$ curl -sSfL https://raw.githubusercontent.com/kamilsk/egg/master/bin/install | sh
# or
$ wget -qO-  https://raw.githubusercontent.com/kamilsk/egg/master/bin/install | sh

Don't forget about security.

Source

# use standard go tools
$ go get github.com/kamilsk/egg@latest
# or use egg tool
$ egg tools add github.com/kamilsk/egg@latest

$ go mod edit -replace=github.com/izumin5210/gex=github.com/kamilsk/gex@latest

Bash and Zsh completions

$ egg completion bash > /path/to/bash_completion.d/egg.sh
$ egg completion zsh  > /path/to/zsh-completions/_egg.zsh
# or autodetect
$ source <(egg completion)

See kubectl documentation.

🀲 Outcomes

Patches

Research


made with ❀️ for everyone