diff options
Diffstat (limited to 'goDep.isPrimitive.go')
| -rw-r--r-- | goDep.isPrimitive.go | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/goDep.isPrimitive.go b/goDep.isPrimitive.go new file mode 100644 index 0000000..a894ecd --- /dev/null +++ b/goDep.isPrimitive.go @@ -0,0 +1,48 @@ +package gitpb + +// only reads in the go.mod file. doesn't change anything + +import ( + "bufio" + "errors" + "os" + "path/filepath" + "strings" + + "go.wit.com/log" +) + +// Detect a 'Primative' package. Sets the isPrimative flag +// will return true if the repo is truly not dependent on _anything_ else +// like spew or lib/widget +// it assumes go mod ran init and tidy ran without error +func (repo *Repo) isPrimativeGoMod() (bool, error) { + // go mod init & go mod tidy ran without errors + log.Log(GITPB, "isPrimativeGoMod()", repo.FullPath) + tmp := filepath.Join(repo.FullPath, "go.mod") + gomod, err := os.Open(tmp) + if err != nil { + log.Log(GITPB, "missing go.mod", repo.FullPath) + return false, err + } + defer gomod.Close() + + scanner := bufio.NewScanner(gomod) + for scanner.Scan() { + line := strings.TrimSpace(scanner.Text()) + + parts := strings.Split(line, " ") + log.Log(GITPB, " gomod:", parts) + if len(parts) >= 1 { + log.Log(GITPB, " gomod: part[0] =", parts[0]) + if parts[0] == "require" { + log.Log(GITPB, " should return false here") + return false, errors.New("go.mod file is not primative") + } + + } + } + repo.GoPrimitive = true + repo.GoDeps = nil + return true, nil +} |
