summaryrefslogtreecommitdiff
path: root/wit.go
diff options
context:
space:
mode:
Diffstat (limited to 'wit.go')
-rw-r--r--wit.go26
1 files changed, 18 insertions, 8 deletions
diff --git a/wit.go b/wit.go
index 10d1f52..df713fc 100644
--- a/wit.go
+++ b/wit.go
@@ -7,6 +7,7 @@ import (
"go.wit.com/lib/fhelp"
"go.wit.com/lib/protobuf/zoopb"
+ "go.wit.com/log"
)
// obviously a hack at this point
@@ -54,13 +55,14 @@ func scanPackageListFile(m *zoopb.Machine, filename string) error {
for scanner.Scan() {
line := scanner.Text()
if line == "" {
- p := parsePackageInfo(debInfo)
+ p, namemap := parsePackageInfo(debInfo)
+ log.Info(len(namemap))
AddIfNewer(m.Wit, p)
debInfo = ""
}
debInfo += line + "\n"
}
- p := parsePackageInfo(debInfo)
+ p, _ := parsePackageInfo(debInfo)
m.Wit.Append(p)
return nil
}
@@ -87,17 +89,20 @@ func (m *Machine) addPackage(name string, version string, filename string) {
*/
// parses dpkg -s foo.deb
-func parsePackageInfo(lines string) *zoopb.Package {
+func parsePackageInfo(lines string) (*zoopb.Package, map[string]string) {
var name string
var version string
var filename string
var gopath string
+ var last string
+ namemap := make(map[string]string)
for _, line := range strings.Split(lines, "\n") {
if line == "" {
continue
}
if strings.HasPrefix(line, " ") {
+ namemap[last] += line + "\n"
// these are usually Description: lines
continue
}
@@ -107,19 +112,24 @@ func parsePackageInfo(lines string) *zoopb.Package {
}
line = strings.TrimSpace(line)
parts := strings.Split(line, " ")
+ if len(parts) == 1 {
+ namemap[parts[0]] = ""
+ }
if len(parts) < 2 {
continue
}
- if parts[0] == "Package:" {
+ last = parts[0]
+ namemap[last] = strings.Join(parts[1:], " ") + "\n"
+ if last == "Package:" {
name = parts[1]
}
- if parts[0] == "Version:" {
+ if last == "Version:" {
version = parts[1]
}
- if parts[0] == "Filename:" {
+ if last == "Filename:" {
filename = strings.Join(parts[1:], " ")
}
- if parts[0] == "GoPath:" {
+ if last == "GoPath:" {
gopath = parts[1]
}
}
@@ -131,5 +141,5 @@ func parsePackageInfo(lines string) *zoopb.Package {
SrcPath: gopath,
}
- return &p
+ return &p, namemap
}