From 7ae8855a075773c50ab8db8ee65bbfa9710f140e Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sun, 22 Feb 2026 09:28:52 +0200 Subject: Add Go project scaffold (task 352) - go.mod with module codeberg.org/snonux/geheim (go 1.22, mage dep) - Magefile.go with Build, Test, Install, Uninstall targets - cmd/geheim/main.go delegating to internal/cli - Stub packages: cli, version, config, crypto, git, store, clipboard, shell - go.sum generated; binary confirmed to build via mage build Co-Authored-By: Claude Sonnet 4.6 --- Magefile.go | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 Magefile.go (limited to 'Magefile.go') diff --git a/Magefile.go b/Magefile.go new file mode 100644 index 0000000..ee80721 --- /dev/null +++ b/Magefile.go @@ -0,0 +1,59 @@ +//go:build mage + +// Magefile provides build targets for the geheim project. +// Targets: Build, Test, Install, Uninstall +package main + +import ( + "fmt" + "os" + + "github.com/magefile/mage/mg" + "github.com/magefile/mage/sh" +) + +const ( + binary = "./bin/geheim" + mainPkg = "./cmd/geheim" +) + +// Build compiles the binary to ./bin/geheim. +func Build() error { + mg.Deps(createBinDir) + fmt.Println("Building", binary) + return sh.RunV("go", "build", "-o", binary, mainPkg) +} + +// Test runs all tests in the module. +func Test() error { + fmt.Println("Running tests") + return sh.RunV("go", "test", "./...") +} + +// Install builds the binary and copies it to ~/.local/bin/geheim. +func Install() error { + mg.Deps(Build) + home, err := os.UserHomeDir() + if err != nil { + return fmt.Errorf("cannot determine home directory: %w", err) + } + dest := home + "/.local/bin/geheim" + fmt.Println("Installing to", dest) + return sh.Copy(dest, binary) +} + +// Uninstall removes the installed binary from ~/.local/bin/geheim. +func Uninstall() error { + home, err := os.UserHomeDir() + if err != nil { + return fmt.Errorf("cannot determine home directory: %w", err) + } + dest := home + "/.local/bin/geheim" + fmt.Println("Uninstalling", dest) + return os.Remove(dest) +} + +// createBinDir ensures ./bin exists before the build step writes the binary. +func createBinDir() error { + return os.MkdirAll("./bin", 0755) +} -- cgit v1.2.3