Put dev dependencies in tools.go
Problem: You have a ./gen.go script that uses github.com/arkady-emelyanov/go-shellparse to do some stuff. When you run go mod tidy it removes github.com/arkady-emelyanov/go-shellparse from your go.mod because ./gen.go has a //go:build ignore in it... which means go mod tidy doesn't include it in its checks. 😔
gen.go//go:build ignore
package main
import (
"github.com/arkady-emelyanov/go-shellparse"
// etc.
)
func main() {
shellparse.ParseVarsFile("file.txt")
exec.Command("go", "run", "github.com/melbahja/got/cmd/got").Run()
}
Solution: Use tools.go with //go:build tools which go mod tidy does scan and add any dependencies to list all the dependencies that ./gen.go needs.
tools.go//go:build tools
package tools
import (
_ "github.com/melbahja/got/cmd/got"
_ "github.com/arkady-emelyanov/go-shellparse"
// etc.
)
go run ./gen.go
Further reading 📚