gomod/gomod.go
2023-05-24 23:37:48 +08:00

48 lines
985 B
Go

package gomod
import (
"fmt"
"os"
"os/exec"
"golang.org/x/mod/modfile"
)
func command(url string) error {
cmd := exec.Command("go", "get", "-u", url)
if _, err := cmd.CombinedOutput(); err != nil {
return err
}
return nil
}
func AllModUpgrade() {
modFileData, err := os.ReadFile("go.mod")
if err != nil {
fmt.Printf("read go.mod file failed: %v\n", err)
return
}
modFile, err := modfile.Parse("go.mod", modFileData, nil)
if err != nil {
fmt.Printf("parse go.mod file failed: %v\n", err)
return
}
for _, mod := range modFile.Require {
fmt.Printf("go get -u %s\n", mod.Mod.String())
if err := command(mod.Mod.String()); err != nil {
fmt.Printf("upgrade %s failed: %v\n", mod.Mod.String(), err)
continue
}
fmt.Printf("upgrade %s success\n", mod.Mod.String())
}
}
func SingleModUpgrade(url string) {
if err := command(url); err != nil {
fmt.Printf("upgrade %s failed: %v\n", url, err)
return
}
fmt.Printf("upgrade %s success\n", url)
}