diff options
Diffstat (limited to 'wit.go')
| -rw-r--r-- | wit.go | 26 |
1 files changed, 18 insertions, 8 deletions
@@ -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 } |
