Skip to content

Commit

Permalink
Merge pull request #15 from svera/release-target
Browse files Browse the repository at this point in the history
Release target
  • Loading branch information
svera authored Mar 12, 2021
2 parents 10b1a20 + 7fc9d00 commit 4e20795
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 3 deletions.
89 changes: 87 additions & 2 deletions magefile.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand All @@ -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)
}

Expand All @@ -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")
}
2 changes: 1 addition & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 4e20795

Please sign in to comment.