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 }