diff options
Diffstat (limited to 'Magefile.go')
| -rw-r--r-- | Magefile.go | 78 |
1 files changed, 14 insertions, 64 deletions
diff --git a/Magefile.go b/Magefile.go index 119f0b8..46dd2ef 100644 --- a/Magefile.go +++ b/Magefile.go @@ -1,5 +1,6 @@ //go:build mage +// Loadbars mage targets: build, test, install (same style as hexai). package main import ( @@ -11,12 +12,9 @@ import ( "github.com/magefile/mage/sh" ) -const ( - binaryName = "loadbars" - shareName = "loadbars" -) +const binaryName = "loadbars" -// Default sets the default target (build). +// Default target: build. func Default() { mg.Deps(Build) } // Build compiles the loadbars binary. @@ -29,68 +27,20 @@ func Test() error { return sh.RunV("go", "test", "./...") } -// Install builds and installs the binary, script, and NOTICE under DESTDIR. -// Usage: DESTDIR=/tmp/install mage install (or mage install for DESTDIR empty) +// Install copies the built binary to GOPATH/bin (defaults to ~/go/bin when GOPATH is unset). func Install() error { mg.Deps(Build) - dest := getDestDir() - binDir := filepath.Join(dest, "usr", "bin") - shareDir := filepath.Join(dest, "usr", "share", shareName) - scriptsDir := filepath.Join(shareDir, "scripts") - if err := os.MkdirAll(binDir, 0755); err != nil { - return fmt.Errorf("mkdir %s: %w", binDir, err) - } - if err := os.MkdirAll(scriptsDir, 0755); err != nil { - return fmt.Errorf("mkdir %s: %w", scriptsDir, err) - } - if err := sh.Copy(filepath.Join(binDir, binaryName), binaryName); err != nil { - return fmt.Errorf("copy binary: %w", err) - } - if err := sh.Copy(filepath.Join(scriptsDir, "loadbars-remote.sh"), "scripts/loadbars-remote.sh"); err != nil { - return fmt.Errorf("copy script: %w", err) - } - if err := sh.Copy(filepath.Join(shareDir, "NOTICE"), "NOTICE"); err != nil { - return fmt.Errorf("copy NOTICE: %w", err) - } - fmt.Printf("Installed to %s (binary: %s/usr/bin/%s)\n", dest, dest, binaryName) - return nil -} - -// Uninstall removes files installed by Install from DESTDIR. -func Uninstall() error { - return deinstall() -} - -// Deinstall is an alias for Uninstall. -func Deinstall() error { - return deinstall() -} - -func deinstall() error { - dest := getDestDir() - if dest == "" { - return fmt.Errorf("DESTDIR must be set to uninstall (e.g. DESTDIR=/tmp/install mage uninstall)") - } - paths := []string{ - filepath.Join(dest, "usr", "bin", binaryName), - filepath.Join(dest, "usr", "share", shareName, "scripts", "loadbars-remote.sh"), - filepath.Join(dest, "usr", "share", shareName, "NOTICE"), - } - for _, p := range paths { - if err := os.Remove(p); err != nil && !os.IsNotExist(err) { - return fmt.Errorf("remove %s: %w", p, err) + gopath := os.Getenv("GOPATH") + if gopath == "" { + home, err := os.UserHomeDir() + if err != nil { + return fmt.Errorf("resolve home: %w", err) } + gopath = filepath.Join(home, "go") } - // Remove empty dirs - _ = os.Remove(filepath.Join(dest, "usr", "share", shareName, "scripts")) - _ = os.Remove(filepath.Join(dest, "usr", "share", shareName)) - fmt.Printf("Uninstalled from %s\n", dest) - return nil -} - -func getDestDir() string { - if d := os.Getenv("DESTDIR"); d != "" { - return filepath.Clean(d) + bin := filepath.Join(gopath, "bin") + if err := os.MkdirAll(bin, 0o755); err != nil { + return err } - return "" + return sh.RunV("cp", "-v", binaryName, bin+"/") } |
