mirror of
https://github.com/github/codeql.git
synced 2026-01-30 23:02:56 +01:00
Run go mod tidy -e if go.mod exists
This commit is contained in:
@@ -2,7 +2,6 @@ package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"golang.org/x/mod/semver"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"net/url"
|
||||
@@ -13,6 +12,8 @@ import (
|
||||
"runtime"
|
||||
"strings"
|
||||
|
||||
"golang.org/x/mod/semver"
|
||||
|
||||
"github.com/github/codeql-go/extractor/autobuilder"
|
||||
"github.com/github/codeql-go/extractor/util"
|
||||
)
|
||||
@@ -289,6 +290,77 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
if depMode == GoGetWithModules {
|
||||
// stat go.mod and go.sum
|
||||
var beforeGoModFileInfo, beforeGoSumFileInfo os.FileInfo
|
||||
|
||||
beforeGoMod, beforeGoModerr := os.Open("go.mod")
|
||||
if beforeGoModerr == nil {
|
||||
var beforeGoModStatErr error
|
||||
beforeGoModFileInfo, beforeGoModStatErr = beforeGoMod.Stat()
|
||||
if beforeGoModStatErr != nil {
|
||||
log.Println("Failed to stat go.mod before running `go mod tidy -e`")
|
||||
}
|
||||
} else {
|
||||
log.Println("Failed to read go.mod before running `go mod tidy -e`")
|
||||
}
|
||||
beforeGoMod.Close()
|
||||
|
||||
beforeGoSum, beforeGoSumErr := os.Open("go.sum")
|
||||
if beforeGoSumErr == nil {
|
||||
var beforeGoSumStatErr error
|
||||
beforeGoSumFileInfo, beforeGoSumStatErr = beforeGoSum.Stat()
|
||||
if beforeGoSumStatErr != nil {
|
||||
log.Println("Failed to stat go.sum before running `go mod tidy -e`")
|
||||
}
|
||||
}
|
||||
// don't print a warning if beforeGoSumErr != nil as it may be that the
|
||||
// file doesn't exist
|
||||
beforeGoSum.Close()
|
||||
|
||||
// run `go mod tidy -e`
|
||||
res := util.RunCmd(exec.Command("go", "mod", "tidy", "-e"))
|
||||
|
||||
if !res {
|
||||
log.Println("Failed to run `go mod tidy -e`")
|
||||
} else {
|
||||
if beforeGoModFileInfo != nil {
|
||||
afterGoMod, afterGoModErr := os.Open("go.mod")
|
||||
if afterGoModErr != nil {
|
||||
log.Println("Failed to read go.mod after running `go mod tidy -e`")
|
||||
} else {
|
||||
afterGoModFileInfo, afterGoModStatErr := afterGoMod.Stat()
|
||||
if afterGoModStatErr != nil {
|
||||
log.Println("Failed to stat go.mod after running `go mod tidy -e`")
|
||||
} else {
|
||||
if afterGoModFileInfo.ModTime().After(beforeGoModFileInfo.ModTime()) {
|
||||
// if go.mod has been changed then notify the user
|
||||
log.Println("We have run `go mod tidy -e` and it altered go.mod. You may wish to check these changes into version control. ")
|
||||
}
|
||||
}
|
||||
}
|
||||
afterGoMod.Close()
|
||||
}
|
||||
|
||||
afterGoSum, afterGoSumErr := os.Open("go.sum")
|
||||
if afterGoSumErr != nil {
|
||||
log.Println("Failed to read go.sum after running `go mod tidy -e`")
|
||||
} else {
|
||||
afterGoSumFileInfo, afterGoSumStatErr := afterGoSum.Stat()
|
||||
if afterGoSumStatErr != nil {
|
||||
log.Println("Failed to stat go.sum after running `go mod tidy -e`")
|
||||
} else {
|
||||
if beforeGoSumErr != nil || afterGoSumFileInfo.ModTime().After(beforeGoSumFileInfo.ModTime()) {
|
||||
// if go.sum has been changed then notify the user
|
||||
log.Println("We have run `go mod tidy -e` and it altered go.sum. You may wish to check these changes into version control. ")
|
||||
}
|
||||
}
|
||||
}
|
||||
afterGoSum.Close()
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// if `LGTM_INDEX_NEED_GOPATH` is set, it overrides the value for `needGopath` inferred above
|
||||
if needGopathOverride := os.Getenv("LGTM_INDEX_NEED_GOPATH"); needGopathOverride != "" {
|
||||
inLGTM = true
|
||||
|
||||
Reference in New Issue
Block a user