package main import ( "os" "time" "go.wit.com/lib/debian" "go.wit.com/lib/protobuf/zoopb" "go.wit.com/log" "google.golang.org/protobuf/types/known/timestamppb" ) func doWalk() (string, error) { os.Chdir(me.pb.BaseDir) // 2. Scan pool directory for .deb files and gather info log.Printf("Scanning for .deb files in %s\n", poolDir) debInfos, err := scanDebs(poolDir, 200) 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.DebInfo = new(zoopb.DebInfo) newdeb.Filename = deb.Filename newdeb.DebInfo.Filename = deb.Filename newdeb.DebInfo.MD5SUM = deb.MD5Sum // newdeb.DebInfo.SHA1 = deb.SHA1Sum newdeb.DebInfo.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 "Architecture": newdeb.Architecture = varvalue case "Git-Tag-Date": if argv.Verbose { log.Info("CONVERT THIS TO TIME", varname, varvalue) } case "Depends": newdeb.DebInfo.Depends = varvalue case "Build-Depends": newdeb.DebInfo.BuildDepends = varvalue case "Packager": newdeb.DebInfo.Packager = varvalue case "Package-Build-Date": varname = "PackageBuildDate" const layout = "2006/01/02 15:04:05 MST" parsedTime, err := time.Parse(layout, varvalue) if err != nil { log.Info("CONVERT TO TIME failed", varname, varvalue, err) } newdeb.BuildDate = timestamppb.New(parsedTime) case "URL": newdeb.DebInfo.Homepage = varvalue default: if err := debian.SetDebInfoString(newdeb, varname, varvalue); err == nil { if argv.Verbose { log.Printf("Searching for Sugarman WORKED: VAR='%-30s' VAL='%s'\n", varname, varvalue) } } else { log.Printf("Searching for Sugarman (unknwon var): VAR='%-30s' VAL='%s' err=%v\n", varname, varvalue, err) } // todo: add to protomap } } counter += 1 me.pb.AppendByFilename(newdeb) if newdeb.Filename == "" { log.Info(deb) log.Info("file=", deb.Filename) panic("newdeb.Filename = ''") } if argv.Verbose { newdeb.Print() } // arch := deb.ControlData["Architecture"] } // footer := me.pb.PrintTable() // log.Info("found so far:", footer) me.pb.Save() log.Printf("add %d new packages. Total packages.Len()=%d\n", counter, me.pb.Len()) return "mirrors/ has been scanned for new files", nil }