36 lines
757 B
Go
36 lines
757 B
Go
package gomod
|
|
|
|
import (
|
|
"os"
|
|
|
|
"git.yetaga.in/deltamualpha/libyear/pkg/libyear"
|
|
"golang.org/x/mod/modfile"
|
|
)
|
|
|
|
func LoadAndComputePairs(filename string) ([]libyear.Pair, error) {
|
|
b, err := os.ReadFile(filename)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
f, err := modfile.Parse(filename, b, nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
q := Queryer{}
|
|
|
|
pairs := []libyear.Pair{}
|
|
|
|
for v := range f.Require {
|
|
if f.Require[v].Mod.Path != "" && f.Require[v].Mod.Version != "" {
|
|
latest := q.GetLatestVersion(f.Require[v].Mod.Path)
|
|
current := q.GetVersion(f.Require[v].Mod.Path, f.Require[v].Mod.Version)
|
|
pairs = append(pairs, libyear.Pair{
|
|
Name: f.Require[v].Mod.Path,
|
|
Current: current,
|
|
Latest: latest,
|
|
})
|
|
}
|
|
}
|
|
return pairs, nil
|
|
}
|