diff options
Diffstat (limited to 'makePackageFile.go')
| -rw-r--r-- | makePackageFile.go | 90 |
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 +} |
