diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..cf4499b --- /dev/null +++ b/Makefile @@ -0,0 +1,12 @@ +BINARY := emcli +LDFLAGS := -s -w + +.PHONY: build test vet +build: + CGO_ENABLED=0 go build -ldflags "$(LDFLAGS)" -o $(BINARY) ./cmd/emcli + +test: + go test ./... + +vet: + go vet ./... diff --git a/cmd/emcli/main.go b/cmd/emcli/main.go new file mode 100644 index 0000000..d946df3 --- /dev/null +++ b/cmd/emcli/main.go @@ -0,0 +1,17 @@ +package main + +import ( + "fmt" + "os" + + "git.dcglab.co.uk/steve/emcli/internal/version" +) + +func main() { + if len(os.Args) >= 2 && os.Args[1] == "version" { + fmt.Println(version.String) + return + } + fmt.Fprintln(os.Stderr, "emcli: no command given") + os.Exit(2) +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..a506e68 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module git.dcglab.co.uk/steve/emcli + +go 1.22 diff --git a/internal/version/version.go b/internal/version/version.go new file mode 100644 index 0000000..759d59a --- /dev/null +++ b/internal/version/version.go @@ -0,0 +1,5 @@ +// Package version holds the build version string. +package version + +// String is the emcli version. Overridden at release via -ldflags. +var String = "v0.1.0-dev" diff --git a/internal/version/version_test.go b/internal/version/version_test.go new file mode 100644 index 0000000..36d4cf1 --- /dev/null +++ b/internal/version/version_test.go @@ -0,0 +1,12 @@ +package version + +import "testing" + +func TestStringIsSemver(t *testing.T) { + if String == "" { + t.Fatal("version.String must not be empty") + } + if String[0] != 'v' { + t.Fatalf("version %q must start with 'v'", String) + } +}