diff options
| author | Jeff Carr <[email protected]> | 2024-12-03 00:35:50 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2024-12-03 00:35:50 -0600 |
| commit | 1d1d8e7eea642cd3fc546101b4899ec1db81e3b7 (patch) | |
| tree | 0a313aa1a49b1aeaacfc3df802171193ed76a324 /goDep.parseGoSum.go | |
| parent | 7a90613c91fa5c06b6fbe5a7a6e48fbba722877d (diff) | |
lots of code hopefully better than before
Diffstat (limited to 'goDep.parseGoSum.go')
| -rw-r--r-- | goDep.parseGoSum.go | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/goDep.parseGoSum.go b/goDep.parseGoSum.go new file mode 100644 index 0000000..69e4826 --- /dev/null +++ b/goDep.parseGoSum.go @@ -0,0 +1,103 @@ +package gitpb + +// does processing on the go.mod and go.sum files + +import ( + "bufio" + "errors" + "os" + "path/filepath" + "strings" + + "go.wit.com/log" +) + +// reads and parses the go.sum file +// does not change anything +func (repo *Repo) ParseGoSum() (bool, error) { + // empty out what was there before + repo.GoDeps = nil + tmp := filepath.Join(repo.FullPath, "go.sum") + gosum, err := os.Open(tmp) + if err != nil { + log.Warn("missing go.sum", repo.FullPath) + return false, err + } + defer gosum.Close() + + scanner := bufio.NewScanner(gosum) + log.Info("gosum:", tmp) + for scanner.Scan() { + line := strings.TrimSpace(scanner.Text()) + + parts := strings.Split(line, " ") + if len(parts) == 3 { + godep := strings.TrimSpace(parts[0]) + version := strings.TrimSpace(parts[1]) + if strings.HasSuffix(version, "/go.mod") { + version = strings.TrimSuffix(version, "/go.mod") + } + new1 := GoDep{ + GoPath: godep, + Version: version, + } + if repo.GoDeps == nil { + repo.GoDeps = new(GoDeps) + } + repo.GoDeps.AppendUniqueGoPath(&new1) + } else { + return false, errors.New("go.sum parse error invalid: " + line) + } + } + + if err := scanner.Err(); err != nil { + repo.GoDeps = nil + return false, err + } + return true, nil +} + +// reads and parses the go.sum file +// is identical to the one above, change that +func (repo *Repo) UpdatePublished() (bool, error) { + // empty out what was there before + repo.Published = nil + tmp := filepath.Join(repo.FullPath, "go.sum") + gosum, err := os.Open(tmp) + if err != nil { + log.Warn("missing go.sum", repo.FullPath) + return false, err + } + defer gosum.Close() + + scanner := bufio.NewScanner(gosum) + log.Info("gosum:", tmp) + for scanner.Scan() { + line := strings.TrimSpace(scanner.Text()) + + parts := strings.Split(line, " ") + if len(parts) == 3 { + godep := strings.TrimSpace(parts[0]) + version := strings.TrimSpace(parts[1]) + if strings.HasSuffix(version, "/go.mod") { + version = strings.TrimSuffix(version, "/go.mod") + } + new1 := GoDep{ + GoPath: godep, + Version: version, + } + if repo.Published == nil { + repo.Published = new(GoDeps) + } + repo.Published.AppendUniqueGoPath(&new1) + } else { + return false, errors.New("go.sum parse error invalid: " + line) + } + } + + if err := scanner.Err(); err != nil { + repo.Published = nil + return false, err + } + return true, nil +} |
