summaryrefslogtreecommitdiff
path: root/doIncoming.go
diff options
context:
space:
mode:
Diffstat (limited to 'doIncoming.go')
-rw-r--r--doIncoming.go87
1 files changed, 23 insertions, 64 deletions
diff --git a/doIncoming.go b/doIncoming.go
index af8ac21..a6a6cbd 100644
--- a/doIncoming.go
+++ b/doIncoming.go
@@ -1,27 +1,17 @@
package main
import (
- "crypto/md5"
"errors"
"os"
"path/filepath"
"strings"
"go.wit.com/lib/config"
- "go.wit.com/lib/gui/shell"
- "go.wit.com/lib/protobuf/argvpb"
"go.wit.com/lib/protobuf/zoopb"
"go.wit.com/log"
)
func moveOutOfIncoming(fullname string) error {
- if strings.HasPrefix(fullname, "pool/main/incoming") {
- log.Info("file is in incoming", fullname)
- } else {
- log.Info("file isn't in incoming", fullname)
- return nil
- }
-
_, filename := filepath.Split(fullname)
parts := strings.Split(filename, "_")
if len(parts) != 3 {
@@ -31,73 +21,42 @@ func moveOutOfIncoming(fullname string) error {
packageName := parts[0]
letteredDir := log.Sprintf("%1.1s", filename)
newfilename := filepath.Join("pool/main", letteredDir, packageName, filename)
- if newfilename == fullname {
- // the filename is correct
- return errors.New(log.Sprintf("should be impossible %s", 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) {
- olddata, _ := os.ReadFile(fullname)
- newdata, _ := os.ReadFile(newfilename)
- oldmd5 := md5.Sum(olddata)
- newmd5 := md5.Sum(newdata)
- if oldmd5 == newmd5 {
- log.Info("OLD FILE", fullname)
- log.Info("NEW FILE", newfilename)
- log.Printf("files are the same %x %x\n", md5.Sum(olddata), md5.Sum(newdata))
- } else {
- shell.RunVerbose([]string{"dpkg", "-I", fullname})
- shell.RunVerbose([]string{"dpkg", "-I", newfilename})
- log.Printf("different checksums: %s %s\n", fullname, newfilename)
- log.Printf("md5sum old %x vs new %x\n", md5.Sum(olddata), md5.Sum(newdata))
- }
- if argv.Force {
- moveFileToBroken(newfilename)
- // os.Rename(path, newfilename)
- // log.Printf("%s moved incoming oldname %s newname: %s\n", packageName, path, newfilename)
- }
- // return "file already exists. use --force to replace", errors.New("duplicate .deb in incoming/")
- argvpb.GoodExit("file already exists. TODO: fix this to use --force to replace")
+ 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)
}
- // 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) {
- os.Chdir(me.pb.BaseDir)
+ 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
+ }
- var counter int
- var incount int
- var newcount int
- err := filepath.Walk("pool", func(path string, info os.FileInfo, err error) error {
- if err != nil {
- return err
- }
- counter += 1
- if !info.IsDir() && strings.HasSuffix(info.Name(), ".deb") {
- if found := me.pb.FindByFilename(path); found != nil {
- // log.Printf("not new file %s\n", path)
- if strings.HasPrefix(path, "pool/main/incoming") {
- incount += 1
- log.Info("file is in incomging", path)
- err := moveOutOfIncoming(path)
- if err != nil {
- log.Info("moveOut err:", err)
- }
- }
- }
- return nil
- }
- newcount += 1
- return nil
- })
+ for _, filename := range files {
+ log.Info("need to move", filename)
+ moveOutOfIncoming(filename)
+ }
- s := log.Sprintf("scanned %d files. (%d) in incoming. (%d) new files pb.Len(%d)", counter, incount, newcount, pb.Len())
+ s := log.Sprintf("scanned (%d) in incoming", len(files))
return s, err
}