summaryrefslogtreecommitdiff
path: root/Magefile.go
diff options
context:
space:
mode:
Diffstat (limited to 'Magefile.go')
-rw-r--r--Magefile.go78
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+"/")
}