Revision: 23334 http://sourceforge.net/p/gar/code/23334 Author: wahwah Date: 2014-04-05 18:47:26 +0000 (Sat, 05 Apr 2014) Log Message: ----------- gen-catalog-index: A new utility
Generates the catalog file. Modified Paths: -------------- csw/mgar/gar/v2/go/Makefile csw/mgar/gar/v2/go/src/opencsw/diskformat/diskformat.go Added Paths: ----------- csw/mgar/gar/v2/go/src/gen-catalog-index/ csw/mgar/gar/v2/go/src/gen-catalog-index/gen-catalog-index.go Modified: csw/mgar/gar/v2/go/Makefile =================================================================== --- csw/mgar/gar/v2/go/Makefile 2014-04-05 18:17:18 UTC (rev 23333) +++ csw/mgar/gar/v2/go/Makefile 2014-04-05 18:47:26 UTC (rev 23334) @@ -3,7 +3,7 @@ # 1. gmake # 2. scp to the web host to replace the old binary -all: bin bin/catalog-release-to-disk +all: bin bin/catalog-release-to-disk bin/gen-catalog-index bin: mkdir -p bin @@ -11,14 +11,22 @@ bin/catalog-release-to-disk: src/catalog-release-to-disk/catalog-release-to-disk.o src/opencsw/diskformat/diskformat.o gccgo -g -o $@ $? +bin/gen-catalog-index: src/gen-catalog-index/gen-catalog-index.o src/opencsw/diskformat/diskformat.o + gccgo -g -o $@ $? + # This is a poor hack, but it gets it to compile. src/catalog-release-to-disk/catalog-release-to-disk.o: src/opencsw/diskformat/diskformat.o mkdir -p opencsw ln -sf ../src/opencsw/diskformat/diskformat.o opencsw/diskformat.o gccgo -o $@ -g -c src/catalog-release-to-disk/catalog-release-to-disk.go +src/gen-catalog-index/gen-catalog-index.o: src/opencsw/diskformat/diskformat.o + mkdir -p opencsw + ln -sf ../src/opencsw/diskformat/diskformat.o opencsw/diskformat.o + gccgo -o $@ -g -c src/gen-catalog-index/gen-catalog-index.go + %.o: %.go gccgo -o $@ -g -c $< clean: - rm -f src/opencsw/diskformat/diskformat.o bin/catalog-release-to-disk + rm -f src/opencsw/diskformat/diskformat.o bin/catalog-release-to-disk bin/gen-catalog-index Added: csw/mgar/gar/v2/go/src/gen-catalog-index/gen-catalog-index.go =================================================================== --- csw/mgar/gar/v2/go/src/gen-catalog-index/gen-catalog-index.go (rev 0) +++ csw/mgar/gar/v2/go/src/gen-catalog-index/gen-catalog-index.go 2014-04-05 18:47:26 UTC (rev 23334) @@ -0,0 +1,53 @@ +package main + +import ( + "bufio" + "flag" + "log" + "os" + "opencsw/diskformat" +) + +// Command line flags +var catrel_flag string +var arch_flag string +var osrel_flag string +var out_file string + +func init() { + flag.StringVar(&out_file, "output", "catalog", + "The name of the file to generate.") + flag.StringVar(&catrel_flag, "catalog-release", "unstable", + "e.g. unstable, bratislava, kiel, dublin") + flag.StringVar(&osrel_flag, "os-release", "SunOS5.10", + "e.g. SunOS5.10") + flag.StringVar(&arch_flag, "arch", "sparc", + "{ sparc | i386 }") + flag.StringVar(&diskformat.PkgdbUrl, "pkgdb-url", + "http://buildfarm.opencsw.org/pkgdb/rest", + "Web address of the pkgdb app.") +} + +func main() { + flag.Parse() + spec := diskformat.CatalogSpec{catrel_flag, arch_flag, osrel_flag} + cws, err := diskformat.GetCatalogWithSpec(spec) + if err != nil { + log.Fatalln("Could not fetch", spec, ":", err) + } + + catalog_fd, err := os.Create(out_file) + if err != nil { + log.Fatalln("Could not open the output file for writing:", err) + } + defer catalog_fd.Close() + catbuf := bufio.NewWriter(catalog_fd) + defer catbuf.Flush() + + log.Println("Writing", spec, "to", out_file) + if err = diskformat.WriteCatalogIndex(catbuf, cws); err != nil { + log.Fatalln("Error while writing:", err) + } else { + log.Println("Catalog index written successfully") + } +} Modified: csw/mgar/gar/v2/go/src/opencsw/diskformat/diskformat.go =================================================================== --- csw/mgar/gar/v2/go/src/opencsw/diskformat/diskformat.go 2014-04-05 18:17:18 UTC (rev 23333) +++ csw/mgar/gar/v2/go/src/opencsw/diskformat/diskformat.go 2014-04-05 18:47:26 UTC (rev 23334) @@ -743,18 +743,32 @@ defer descbuf.Flush() } - // http://www.opencsw.org/manual/for-maintainers/catalog-format.html - ts_line := fmt.Sprintf("# CREATIONDATE %s\n", time.Now().Format(time.RFC3339)) - catbuf.WriteString(ts_line) + if err := WriteCatalogIndex(catbuf, cws); err != nil { + log.Println("Failed while writing to", catalog_file_path, + ":", err) + } for _, pkg := range cws.Pkgs { - catbuf.WriteString(pkg.AsCatalogEntry()) - catbuf.WriteString("\n") descbuf.WriteString(pkg.AsDescription()) descbuf.WriteString("\n") } } +// Write the catalog file to given Writer. File format as defined by +// http://www.opencsw.org/manual/for-maintainers/catalog-format.html +func WriteCatalogIndex(w *bufio.Writer, cws CatalogWithSpec) error { + ts_line := fmt.Sprintf("# CREATIONDATE %s\n", time.Now().Format(time.RFC3339)) + w.WriteString(ts_line) + + for _, pkg := range cws.Pkgs{ + _, err := w.WriteString(pkg.AsCatalogEntry()) + if err != nil { return err } + _, err = w.WriteString("\n") + if err != nil { return err } + } + return nil +} + // The main function of this package. func GenerateCatalogRelease(catrel string, catalog_root string) { log.Println("catrel:", catrel) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.