package main import ( "os" "go.wit.com/lib/config" "go.wit.com/lib/debian" "go.wit.com/lib/protobuf/zoopb" "go.wit.com/log" "google.golang.org/protobuf/encoding/prototext" ) func doWalk() (string, error) { os.Chdir(me.mirrorsDir) // 2. Scan pool directory for .deb files and gather info log.Printf("Scanning for .deb files in %s\n", poolDir) debInfos, err := scanDebs(poolDir, 35) if err != nil { log.Printf("Failed to scan .deb files: %v\n", err) me.sh.BadExit("scan pool scan dir", err) } var counter int for _, deb := range debInfos { newdeb := new(zoopb.Package) newdeb.Filename = deb.Filename newdeb.MD5SUM = deb.MD5Sum newdeb.SHA1 = deb.SHA1Sum newdeb.SHA256 = deb.SHA256Sum // log.Info("len(CONTROLDATA)", len(deb.ControlData)) // log.Sprintf("VAR='%s' VAL='%s'\n", varname, varvalue) // log.Info("%v", deb.ControlData) for varname, varvalue := range deb.ControlData { switch varname { case "Package": newdeb.Package = varvalue case "Version": newdeb.Version = varvalue case "Git-Tag-Date": log.Info("CONVERT THIS TO TIME", varvalue) case "Depends": newdeb.Depends = varvalue case "Build-Depends": newdeb.BuildDepends = varvalue case "Architecture": newdeb.Architecture = varvalue case "Packager": newdeb.Packager = varvalue case "Package-Build-Date": varvalue = "PackageBuildDate" case "URL": newdeb.URL = varvalue default: if ok, err := debian.SetString(newdeb, varname, varvalue); ok { continue } else if err != nil { log.Printf("%v VAR='%s' VAL='%s'\n", err, varname, varvalue) } // todo: add to protomap } } counter += 1 me.pb.AppendByFilename(newdeb) log.Info(prototext.Format(newdeb)) // arch := deb.ControlData["Architecture"] } // footer := me.pb.PrintTable() // log.Info("found so far:", footer) config.Save(me.pb) log.Printf("add %d new packages. Total packages.Len()=%d\n", counter, me.pb.Len()) return "/home/mirrors/wit/ has been scanned for ne files", nil }