83 lines
1.4 KiB
Go
83 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"bufio"
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
)
|
|
|
|
// simple script to consolidate all gomods to one gomod
|
|
// required for GolangCI linter
|
|
func main() {
|
|
bigFatGomod := ""
|
|
|
|
for _, fileName := range getGomods() {
|
|
dir := filepath.Dir(fileName)
|
|
if dir == "." {
|
|
continue
|
|
}
|
|
|
|
file, err := os.Open(fileName)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
fileMod := ""
|
|
|
|
scanner := bufio.NewScanner(file)
|
|
for scanner.Scan() {
|
|
txt := scanner.Text()
|
|
if strings.HasPrefix(txt, "go ") {
|
|
continue
|
|
}
|
|
if strings.HasPrefix(txt, "module ") {
|
|
continue
|
|
}
|
|
|
|
fileMod += txt + "\n"
|
|
}
|
|
|
|
if err := scanner.Err(); err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
if fileMod != "" {
|
|
bigFatGomod += "// " + fileName + "\n"
|
|
bigFatGomod += fileMod + "\n"
|
|
}
|
|
|
|
_ = file.Close()
|
|
|
|
// gomod is stupid, and go vendor removes all deps that are not needed
|
|
// (and they are not needed if they are already meet in sub go.mods)
|
|
if err := os.Remove(fileName); err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
fmt.Println(bigFatGomod)
|
|
}
|
|
|
|
func getGomods() []string {
|
|
var fileList []string
|
|
|
|
err := filepath.Walk(".", func(path string, f os.FileInfo, err error) error {
|
|
if strings.Contains(path, "/vendor/") {
|
|
return nil
|
|
}
|
|
|
|
if strings.Contains(path, "go.mod") {
|
|
fileList = append(fileList, path)
|
|
}
|
|
return nil
|
|
})
|
|
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
return fileList
|
|
}
|