package main import ( "errors" "os" "path/filepath" "strings" "go.wit.com/lib/config" "go.wit.com/lib/protobuf/zoopb" "go.wit.com/log" ) func moveOutOfIncoming(fullname string) error { _, filename := filepath.Split(fullname) parts := strings.Split(filename, "_") if len(parts) != 3 { // todo: add more filename checking here (check for ".deb") return errors.New(log.Sprintf("bad filenae %s", filename)) } packageName := parts[0] letteredDir := log.Sprintf("%1.1s", filename) newfilename := filepath.Join("pool/main", letteredDir, packageName, filename) destDir := filepath.Dir(newfilename) if err := os.MkdirAll(destDir, 0755); err != nil { log.Printf("%s move incoming oldname %s newname: %s\n", packageName, fullname, newfilename) log.Fatal("Failed to create destination directory: %v", err) } log.Printf("%s move incoming oldname %s newname: %s\n", packageName, fullname, newfilename) if config.Exists(newfilename) { log.Info("DEBIAN POLICY: YOU CAN NEVER REBUILD THE SAME FILE. APT WILL NOT REINSTALL IT.") log.Info("AUTO REMOVING", fullname) return os.Remove(fullname) } if argv.Force { // file can be moved os.Rename(fullname, newfilename) } log.Printf("%s moved incoming oldname %s newname: %s\n", packageName, fullname, newfilename) return nil } func doIncoming(pb *zoopb.Packages) (string, error) { if err := os.Chdir(me.pb.BaseDir); err != nil { return "no dir " + me.pb.BaseDir, err } globPattern := "/home/mirrors/wit/incoming/*.deb" files, err := filepath.Glob(globPattern) if err != nil { return "glob error", err } for _, filename := range files { log.Info("need to move", filename) moveOutOfIncoming(filename) } s := log.Sprintf("scanned (%d) in incoming", len(files)) return s, err }