summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-10-14 04:40:11 -0500
committerJeff Carr <[email protected]>2025-10-14 04:50:56 -0500
commit7905bfcde0894a63b9433b3c777e2b255591138f (patch)
tree9814aab6faa2aac0150ab82f1d9f8d528b0b4738
parentf2a3ac86043387725cb932c877bc76770812b11f (diff)
housecleaning
-rw-r--r--Makefile3
-rw-r--r--argv.go24
-rw-r--r--doDistro.go11
-rw-r--r--doMake.go61
-rw-r--r--doRelease.go (renamed from doEverything.go)13
-rw-r--r--main.go38
-rw-r--r--makePackagesFile.go70
-rw-r--r--stuff.go20
8 files changed, 123 insertions, 117 deletions
diff --git a/Makefile b/Makefile
index 35f34fd..e5cffa5 100644
--- a/Makefile
+++ b/Makefile
@@ -5,8 +5,7 @@ GUIVERSION = $(shell git describe --tags)
BUILDTIME = $(shell date +%s)
all: reset goimports vet install
-
-try-everything: reset goimports vet build automate-everything
+ mirrors everything
automate-everything:
./mirrors walk
diff --git a/argv.go b/argv.go
index 4cb8843..a3d3532 100644
--- a/argv.go
+++ b/argv.go
@@ -17,18 +17,18 @@ import (
var argv args
type args struct {
- List *EmptyCmd `arg:"subcommand:list" help:"show the packages"`
- Walk *WalkCmd `arg:"subcommand:walk" help:"walk the filesystem for new .deb files"`
- Update *EmptyCmd `arg:"subcommand:oldway" help:"the old code to update the apt repo"`
- Verify *EmptyCmd `arg:"subcommand:verify" help:"verify the pb is accurate and doesn't have errors"`
- Incoming *IncomingCmd `arg:"subcommand:incoming" help:"handle the incoming directory"`
- MakeDists *EmptyCmd `arg:"subcommand:makedists" help:"make debian mirrors/dists files for 'apt update'"`
- Everything *EmptyCmd `arg:"subcommand:everything" help:"do the whole thing needed. nothing more. just everything."`
- Newest *EmptyCmd `arg:"subcommand:newest" help:"make a list of the newest .deb packages"`
- DryRun bool `arg:"--dry-run" help:"only show what would be packaged"`
- Verbose bool `arg:"--verbose" help:"be loud about it"`
- Force bool `arg:"--force" help:"rebuild everything"`
- Create bool `arg:"--create" help:"create a new .pb file"`
+ List *EmptyCmd `arg:"subcommand:list" help:"show the packages"`
+ Walk *WalkCmd `arg:"subcommand:walk" help:"walk the filesystem for new .deb files"`
+ Verify *EmptyCmd `arg:"subcommand:verify" help:"verify the pb is accurate and doesn't have errors"`
+ Incoming *IncomingCmd `arg:"subcommand:incoming" help:"handle the incoming directory"`
+ MakeDists *EmptyCmd `arg:"subcommand:makedists" help:"make debian mirrors/dists files for 'apt update'"`
+ SignRelease *EmptyCmd `arg:"subcommand:release" help:"make & GPG sign the Release files"`
+ Everything *EmptyCmd `arg:"subcommand:everything" help:"do the whole thing needed. nothing more. just everything."`
+ Newest *EmptyCmd `arg:"subcommand:newest" help:"make a list of the newest .deb packages"`
+ DryRun bool `arg:"--dry-run" help:"only show what would be packaged"`
+ Verbose bool `arg:"--verbose" help:"be loud about it"`
+ Force bool `arg:"--force" help:"rebuild everything"`
+ Create bool `arg:"--create" help:"create a new .pb file"`
}
type EmptyCmd struct {
diff --git a/doDistro.go b/doDistro.go
index 20b28fb..f8034cd 100644
--- a/doDistro.go
+++ b/doDistro.go
@@ -1,14 +1,6 @@
package main
-import (
- "fmt"
- "os"
- "path/filepath"
- "strings"
-
- "go.wit.com/log"
-)
-
+/*
func doDistro() error {
log.Println("--- Starting Debian repository generation in Go ---")
@@ -92,3 +84,4 @@ func doDistro() error {
log.Println("--- Repository generation complete! ---")
return nil
}
+*/
diff --git a/doMake.go b/doMake.go
index 76ba16e..cc4c963 100644
--- a/doMake.go
+++ b/doMake.go
@@ -1,12 +1,20 @@
package main
import (
+ "crypto/md5"
+ "crypto/sha256"
+ "errors"
+ "fmt"
+ "io"
"os"
+ "path/filepath"
"strings"
"go.wit.com/lib/debian"
+ "go.wit.com/lib/gui/shell"
"go.wit.com/lib/protobuf/zoopb"
"go.wit.com/log"
+ "google.golang.org/protobuf/types/known/timestamppb"
)
// os.Chdir(me.mirrorsDir)
@@ -48,3 +56,56 @@ func doMakePackagesFile(all *zoopb.Packages) string {
}
return pfile
}
+
+func populateDebInfo(p *zoopb.Package) error {
+ // SIMPLE SANITY CHECKS
+ if p.DebInfo != nil {
+ // already added p.DebInfo
+ return nil
+ }
+ fullname := filepath.Join(me.pb.BaseDir, p.Filename)
+ cmd := []string{"dpkg", "-I", fullname}
+ r := shell.Run(cmd)
+ if r.Error != nil {
+ return r.Error
+ }
+ if r.Exit != 0 {
+ return errors.New("dpkg returned -1")
+ }
+ stat, err := os.Stat(fullname)
+ if err != nil {
+ return err
+ }
+ filedata, err := os.Open(fullname)
+ if err != nil {
+ return err
+ }
+ defer filedata.Close()
+ // SIMPLE SANITY CHECKS END
+
+ // SHA256 HASH
+ p.DebInfo = new(zoopb.DebInfo)
+
+ hSHA256 := sha256.New()
+ hMD5 := md5.New() // probably deprecate, but love md5sum too much
+ // hSHA1 := sha1.New() // deprecated
+
+ // TeeReader allows writing to multiple hashers at once
+ // multiWriter := io.MultiWriter(hMD5, hSHA1, hSHA256)
+ multiWriter := io.MultiWriter(hSHA256, hMD5)
+ if _, err := io.Copy(multiWriter, filedata); err != nil {
+ return err
+ }
+ p.DebInfo.SHA256 = fmt.Sprintf("%x", hSHA256.Sum(nil)) // should be the standard now
+ p.DebInfo.MD5SUM = fmt.Sprintf("%x", hMD5.Sum(nil)) // probably deprecate
+ // p.DebInfo.SHA1 = fmt.Sprintf("%x", hSHA1.Sum(nil)) // deprecated
+ // SHA256 HASH END
+
+ // set file create time
+ p.Ctime = timestamppb.New(stat.ModTime())
+
+ // PARSE "dpkg -I <p.Filename>", then exit as we are done
+ all := strings.Join(r.Stdout, "\n")
+ debian.ParseDpkgOutputIntoPB(p, all)
+ return nil
+}
diff --git a/doEverything.go b/doRelease.go
index f8d9546..887dab9 100644
--- a/doEverything.go
+++ b/doRelease.go
@@ -1,6 +1,7 @@
package main
import (
+ "bytes"
"crypto/sha256"
"errors"
"fmt"
@@ -14,7 +15,7 @@ import (
"go.wit.com/log"
)
-func doEverything() (string, error) {
+func doRelease() (string, error) {
// log.Info(r, err2)
shell.RunVerbose([]string{"rm", "-rf", "/home/mirrors/wit/dists"})
// shell.RunVerbose([]string{"rm", "f", "/home/mirrors/wit/dists/sid/InRelease"})
@@ -162,3 +163,13 @@ func doEverything() (string, error) {
return "did everything", nil
}
+
+func runCommand(cmd *exec.Cmd) error {
+ var stderr bytes.Buffer
+ cmd.Stderr = &stderr
+ err := cmd.Run()
+ if err != nil {
+ return fmt.Errorf("command '%s' failed: %v\nStderr: %s", cmd.String(), err, stderr.String())
+ }
+ return nil
+}
diff --git a/main.go b/main.go
index fc14458..60f7480 100644
--- a/main.go
+++ b/main.go
@@ -9,6 +9,7 @@ import (
"go.wit.com/lib/gui/prep"
"go.wit.com/lib/gui/shell"
"go.wit.com/lib/protobuf/zoopb"
+ "go.wit.com/log"
)
// sent via -ldflags
@@ -96,16 +97,43 @@ func main() {
s, err = doVerify()
}
- if argv.Update != nil {
- err = doDistro()
- }
-
if argv.MakeDists != nil {
s, err = doMakeDists()
}
+ if argv.SignRelease != nil {
+ s, err = doRelease()
+ }
+
if argv.Everything != nil {
- s, err = doEverything()
+ s, err = doWalk()
+ if err != nil {
+ me.sh.BadExit(s, err)
+ }
+ s, err = doIncoming(me.pb)
+ if err != nil {
+ me.sh.BadExit(s, err)
+ }
+ // a second time, files from incoming should have
+ // been moved now
+ s, err = doWalk()
+ if err != nil {
+ me.sh.BadExit(s, err)
+ }
+
+ // verify all the packages
+ s, err = doVerify()
+ if err != nil {
+ me.sh.BadExit(s, err)
+ }
+
+ // print a table of the newest packages
+ all := doGetNewest("amd64")
+ s = "newest .deb files table: " + all.PrintTable()
+ log.Info("newest files are:", s)
+
+ // make and GPG sign the Release files
+ s, err = doRelease()
}
if err != nil {
diff --git a/makePackagesFile.go b/makePackagesFile.go
deleted file mode 100644
index a2d1173..0000000
--- a/makePackagesFile.go
+++ /dev/null
@@ -1,70 +0,0 @@
-package main
-
-import (
- "crypto/md5"
- "crypto/sha256"
- "errors"
- "fmt"
- "io"
- "os"
- "path/filepath"
- "strings"
-
- "go.wit.com/lib/debian"
- "go.wit.com/lib/gui/shell"
- "go.wit.com/lib/protobuf/zoopb"
- "google.golang.org/protobuf/types/known/timestamppb"
-)
-
-func populateDebInfo(p *zoopb.Package) error {
- // SIMPLE SANITY CHECKS
- if p.DebInfo != nil {
- // already added p.DebInfo
- return nil
- }
- fullname := filepath.Join(me.pb.BaseDir, p.Filename)
- cmd := []string{"dpkg", "-I", fullname}
- r := shell.Run(cmd)
- if r.Error != nil {
- return r.Error
- }
- if r.Exit != 0 {
- return errors.New("dpkg returned -1")
- }
- stat, err := os.Stat(fullname)
- if err != nil {
- return err
- }
- filedata, err := os.Open(fullname)
- if err != nil {
- return err
- }
- defer filedata.Close()
- // SIMPLE SANITY CHECKS END
-
- // SHA256 HASH
- p.DebInfo = new(zoopb.DebInfo)
-
- hSHA256 := sha256.New()
- hMD5 := md5.New() // probably deprecate, but love md5sum too much
- // hSHA1 := sha1.New() // deprecated
-
- // TeeReader allows writing to multiple hashers at once
- // multiWriter := io.MultiWriter(hMD5, hSHA1, hSHA256)
- multiWriter := io.MultiWriter(hSHA256, hMD5)
- if _, err := io.Copy(multiWriter, filedata); err != nil {
- return err
- }
- p.DebInfo.SHA256 = fmt.Sprintf("%x", hSHA256.Sum(nil)) // should be the standard now
- p.DebInfo.MD5SUM = fmt.Sprintf("%x", hMD5.Sum(nil)) // probably deprecate
- // p.DebInfo.SHA1 = fmt.Sprintf("%x", hSHA1.Sum(nil)) // deprecated
- // SHA256 HASH END
-
- // set file create time
- p.Ctime = timestamppb.New(stat.ModTime())
-
- // PARSE "dpkg -I <p.Filename>", then exit as we are done
- all := strings.Join(r.Stdout, "\n")
- debian.ParseDpkgOutputIntoPB(p, all)
- return nil
-}
diff --git a/stuff.go b/stuff.go
index 0458b05..0877e76 100644
--- a/stuff.go
+++ b/stuff.go
@@ -1,23 +1,6 @@
package main
-import (
- "bufio"
- "bytes"
- "compress/gzip"
- "crypto/md5"
- "crypto/sha1"
- "crypto/sha256"
- "fmt"
- "io"
- "os"
- "os/exec"
- "path/filepath"
- "strings"
- "time"
-
- "go.wit.com/log"
-)
-
+/*
func runCommand(cmd *exec.Cmd) error {
var stderr bytes.Buffer
cmd.Stderr = &stderr
@@ -238,3 +221,4 @@ func scanDebs(root string, count int) ([]DebInfo, error) {
})
return debs, err
}
+*/