mirror of
https://github.com/cupcakearmy/autorestic.git
synced 2024-12-22 08:16:25 +00:00
build file
This commit is contained in:
parent
03cbbfd91c
commit
43244302be
83
build/build.go
Normal file
83
build/build.go
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
// Heavily inspired (copied) by the restic build file
|
||||||
|
// https://github.com/restic/restic/blob/aa0faa8c7d7800b6ba7b11164fa2d3683f7f78aa/helpers/build-release-binaries/main.go#L225
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
"path"
|
||||||
|
"path/filepath"
|
||||||
|
|
||||||
|
"github.com/cupcakearmy/autorestic/internal"
|
||||||
|
)
|
||||||
|
|
||||||
|
var DIR, _ = filepath.Abs("./dist")
|
||||||
|
|
||||||
|
var targets = map[string][]string{
|
||||||
|
"darwin": {"amd64"},
|
||||||
|
"freebsd": {"386", "amd64", "arm"},
|
||||||
|
"linux": {"386", "amd64", "arm", "arm64"},
|
||||||
|
"netbsd": {"386", "amd64"},
|
||||||
|
"openbsd": {"386", "amd64"},
|
||||||
|
}
|
||||||
|
|
||||||
|
type buildOptions struct {
|
||||||
|
Target, Arch, Version string
|
||||||
|
}
|
||||||
|
|
||||||
|
func build(options buildOptions) error {
|
||||||
|
fmt.Printf("Building %s %s\n", options.Target, options.Arch)
|
||||||
|
out := fmt.Sprintf("autorestic_%s_%s_%s", options.Version, options.Target, options.Arch)
|
||||||
|
out = path.Join(DIR, out)
|
||||||
|
out, _ = filepath.Abs(out)
|
||||||
|
fmt.Println(out)
|
||||||
|
|
||||||
|
// Build
|
||||||
|
{
|
||||||
|
c := exec.Command("go", "build", "-o", out, "./main.go")
|
||||||
|
c.Stdout = os.Stdout
|
||||||
|
c.Stderr = os.Stderr
|
||||||
|
c.Env = append(os.Environ(),
|
||||||
|
"CGO_ENABLED=0",
|
||||||
|
"GOOS="+options.Target,
|
||||||
|
"GOARCH="+options.Arch,
|
||||||
|
)
|
||||||
|
err := c.Run()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compress
|
||||||
|
{
|
||||||
|
c := exec.Command("bzip2", out)
|
||||||
|
c.Dir = DIR
|
||||||
|
c.Stdout = os.Stdout
|
||||||
|
c.Stderr = os.Stderr
|
||||||
|
err := c.Run()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
os.RemoveAll(DIR)
|
||||||
|
v := internal.VERSION
|
||||||
|
for target, archs := range targets {
|
||||||
|
for _, arch := range archs {
|
||||||
|
err := build(buildOptions{
|
||||||
|
Target: target,
|
||||||
|
Arch: arch,
|
||||||
|
Version: v,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user