pkg.tk-software.de/gotice@v0.4.1-0.20240224130243-6adec687b106/magefiles/package.go (about) 1 //go:build mage 2 3 package main 4 5 import ( 6 "fmt" 7 "os" 8 "path/filepath" 9 10 "github.com/magefile/mage/mg" 11 "pkg.tk-software.de/gotice/version" 12 "pkg.tk-software.de/spartan/archive/tgzfile" 13 "pkg.tk-software.de/spartan/archive/zipfile" 14 ) 15 16 // Package packages the build artifacts together with static files into archive files. 17 func Package() error { 18 mg.Deps(Build) 19 20 fmt.Println("Executing: Package") 21 22 for _, t := range Targets { 23 zipf := fmt.Sprintf("%s-%s-%s-%d.%d.%d", AppName, t.Os, t.Arch, version.Major, version.Minor, version.Revision) 24 dir := t.OutPath() 25 26 fmt.Println("Packaging:", zipf, "; source:", dir) 27 28 files, err := os.ReadDir(dir) 29 if err != nil { 30 return err 31 } 32 33 filesToZip := make(map[string]string) 34 35 for _, f := range files { 36 srcf := filepath.Join(dir, f.Name()) 37 filesToZip[srcf] = f.Name() 38 } 39 40 if t.Os == "windows" { 41 if err := zipfile.Create(zipf+".zip", filesToZip); err != nil { 42 return err 43 } 44 } else { 45 permissions := func(filename string) int64 { 46 if filename == AppName { 47 return 0777 48 } 49 50 return -1 51 } 52 53 if err := tgzfile.CreatePermissionFunc(zipf+".tar.gz", filesToZip, permissions); err != nil { 54 return err 55 } 56 } 57 } 58 59 return nil 60 }