From 7400a4427a1a437b497ef632e587a7696a348b57 Mon Sep 17 00:00:00 2001 From: Sergio Vera Date: Fri, 12 Mar 2021 14:59:54 +0100 Subject: [PATCH 1/2] Added release commange to magefile --- magefile.go | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 87 insertions(+), 2 deletions(-) diff --git a/magefile.go b/magefile.go index 6361a59..8adc8cc 100644 --- a/magefile.go +++ b/magefile.go @@ -3,14 +3,17 @@ package main import ( + "archive/zip" "fmt" + "io" + "os" "github.com/magefile/mage/sh" ) // Installs the application. func Install() error { - version, err := sh.Output("git", "describe", "--always", "--long", "--dirty") + version, err := version() if err != nil { return err } @@ -23,10 +26,39 @@ func Build(platform string) error { if err != nil { return err } - version, err := sh.Output("git", "describe", "--always", "--long", "--dirty") + version, err := version() if err != nil { return err } + return buildEnv(platform, version, envMap) +} + +// Build binary files of the current version for all supported platforms and zip them +func Release() error { + platforms := []string{"rpi32", "osxintel"} + version, err := version() + if err != nil { + return err + } + for _, platform := range platforms { + fmt.Printf("Building binary for %s\n", platform) + envMap, err := env(platform) + if err != nil { + return err + } + err = buildEnv(platform, version, envMap) + if err != nil { + return err + } + err = createZip("coreander", "coreander_"+version+"_"+platform+".zip") + if err != nil { + return err + } + } + return nil +} + +func buildEnv(platform, version string, envMap map[string]string) error { return sh.RunWith(envMap, "go", "build", "-ldflags", "-X main.version="+version) } @@ -49,3 +81,56 @@ func env(platform string) (map[string]string, error) { return env, fmt.Errorf("Platform '%s' not supported", platform) } + +func createZip(fileName, zipFileName string) error { + zipFile, err := os.Create(zipFileName) + if err != nil { + return err + } + defer zipFile.Close() + w := zip.NewWriter(zipFile) + defer w.Close() + + if err = addFileToZip(w, fileName); err != nil { + return err + } + return nil +} + +func addFileToZip(zipWriter *zip.Writer, filename string) error { + fileToZip, err := os.Open(filename) + if err != nil { + return err + } + defer fileToZip.Close() + + // Get the file information + info, err := fileToZip.Stat() + if err != nil { + return err + } + + header, err := zip.FileInfoHeader(info) + if err != nil { + return err + } + + // Using FileInfoHeader() above only uses the basename of the file. If we want + // to preserve the folder structure we can overwrite this with the full path. + header.Name = filename + + // Change to deflate to gain better compression + // see http://golang.org/pkg/archive/zip/#pkg-constants + header.Method = zip.Deflate + + writer, err := zipWriter.CreateHeader(header) + if err != nil { + return err + } + _, err = io.Copy(writer, fileToZip) + return err +} + +func version() (string, error) { + return sh.Output("git", "describe", "--always", "--dirty", "--tags") +} From 7fc9d0074cdd37b34da5070891c70fbc6c6ec354 Mon Sep 17 00:00:00 2001 From: Sergio Vera Date: Fri, 12 Mar 2021 15:01:56 +0100 Subject: [PATCH 2/2] Removed dashes line --- main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.go b/main.go index aa27f66..ee332a1 100644 --- a/main.go +++ b/main.go @@ -74,7 +74,7 @@ func run(cfg Config, homeDir string, metadataReaders map[string]metadata.Reader, fileWatcher(idx, cfg.LibPath) }() app := webserver.New(idx, cfg.LibPath, homeDir, version, metadataReaders, cfg.CoverMaxWidth) - fmt.Printf("Coreander version %s started listening on port %s\n--------------------------------------\n", version, cfg.Port) + fmt.Printf("Coreander version %s started listening on port %s\n\n", version, cfg.Port) err = app.Listen(fmt.Sprintf(":%s", cfg.Port)) if err != nil { log.Fatal(err)