load modules before go get
@@ -24,10 +24,14 @@ func (m *Modules) Add(v *Module) {
*m = append(*m, v)
}
+func (m *Modules) Len() int {
+ return len(*m)
+}
+
func (m *Modules) GetByFilename(filename, ver string) *Module {
- for _, mod := range *m {
+ for i, mod := range *m {
if hasPathPrefix(mod.Name, filename) {
- if ver != "" && mod.Version != ver {
+ if i != 0 && ver != "" && mod.Version != ver {
continue
}
return mod
@@ -50,6 +54,12 @@ func Find(name string, ver string) (*Module, error) {
return nil, errors.New("no go.mod file, run `go mod init` first")
}
+ if modules.Len() == 0 {
+ if err := modules.Load(); err != nil {
+ return nil, fmt.Errorf("error loading modules: %s", err.Error())
+ }
+ }
+
mod := modules.GetByFilename(name, ver)
if mod != nil {
return mod, nil
