summaryrefslogtreecommitdiff
path: root/makePackageFile.go
diff options
context:
space:
mode:
Diffstat (limited to 'makePackageFile.go')
-rw-r--r--makePackageFile.go90
1 files changed, 90 insertions, 0 deletions
diff --git a/makePackageFile.go b/makePackageFile.go
new file mode 100644
index 0000000..3926901
--- /dev/null
+++ b/makePackageFile.go
@@ -0,0 +1,90 @@
+package zoopb
+
+import (
+ "bytes"
+ "fmt"
+ "io"
+ "os"
+ "path"
+ "path/filepath"
+)
+
+// remove and return the pb varname
+func (pb *Package) DeleteString(varname string) string {
+ return "todo"
+}
+
+// makes /home/mirrors/debian/dists/ for use by 'apt update'
+func (pb *Packages) MakeDists() (string, error) {
+ os.Chdir(pb.BaseDir)
+
+ arch := "risc64"
+ packageDir := filepath.Join("dists", "sid", "main", "binary"+arch)
+ pb.MakePackageFile(packageDir, arch)
+
+ /*
+ // 5. Generate and sign the Release file
+ log.Println("Generating and signing Release file...")
+ if err := generateAndSignReleaseFile(distPath); err != nil {
+ log.Printf("Failed to generate or sign Release file: %v\n", err)
+ return err
+ }
+ */
+
+ return "--- Repository generation complete! ---", nil
+}
+
+// similar to "dpkg -I moonbuggy.deb"
+// destroys the pb so send a copy
+func (pb *Package) writeDebInfo(w io.Writer) {
+ fmt.Fprintf(w, "Package: %s\n", pb.Package)
+ fmt.Fprintf(w, "Filename: %s\n", pb.Filename)
+ fmt.Fprintf(w, "MD5sum: %s\n", pb.DeleteString("md5sum"))
+ fmt.Fprintf(w, "SHA1: %s\n", pb.DeleteString("SHA1"))
+ fmt.Fprintf(w, "SHA256: %s\n", pb.DeleteString("sha256"))
+}
+
+// makes the file "dists/sid/main/binary-riscv64/Packages"
+// then compresses it as .gz & .bz2 files
+func (pb *Packages) MakePackageFile(packageDir string, arch string) error {
+ if err := os.Chdir(pb.BaseDir); err != nil {
+ return err
+ }
+
+ fullpath := path.Join(pb.BaseDir, packageDir)
+ os.MkdirAll(fullpath, 0755)
+
+ // made a new PB in memory of just the matching riscv64.deb files
+ matcharch := NewPackages()
+
+ // goes through each .deb file and writes out the entry in the Packages file
+ for debPB := range pb.IterByFilename() {
+ if debPB.Architecture != arch {
+ continue
+ }
+ matcharch.Append(debPB)
+ }
+
+ var data bytes.Buffer
+ for debPB := range matcharch.IterByFilename() {
+ debPB.writeDebInfo(&data)
+ }
+
+ // write out the "Packages" file
+ if err := os.WriteFile(filepath.Join(packageDir, "Package"), []byte(data.String()), 0644); err != nil {
+ return err
+ }
+
+ /*
+ // Create "Packages.gz"
+ if err := compressFile(filepath.Join(fullfile, "Package.gz"); err != nil {
+ return err
+ }
+
+ // Create "Packages.gz"
+ if err := compressFile(filepath.Join(fullfile, "Package.bz2"); err != nil {
+ return err
+ }
+ */
+ return nil
+}