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 π