48 lines
985 B
Go
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)
|
||
|
}
|