From f7843e1fa450e1d5b5f22eb1fcf7642da80eeaab Mon Sep 17 00:00:00 2001 From: Matty Evans Date: Thu, 16 Jan 2025 17:02:10 +1000 Subject: [PATCH] feat(build): adds ldflgs --- .goreleaser.yaml | 5 ++++- cmd/cli/main.go | 13 ++++++++++++ internal/installer/installer.go | 35 +++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 internal/installer/installer.go diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 698f130..7e6d7c1 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -1,3 +1,5 @@ +project_name: contributoor-installer + before: hooks: - go mod tidy @@ -15,7 +17,8 @@ builds: - amd64 - arm64 ldflags: - - -s -w + - -s -w -X github.com/ethpandaops/contributoor-installer/internal/installer.Release={{.Tag}} -X github.com/ethpandaops/contributoor-installer/internal/installer.GitCommit={{.ShortCommit}} -X github.com/ethpandaops/contributoor-installer/internal/installer.GOOS={{.Os}} -X github.com/ethpandaops/contributoor-installer/internal/installer.GOARCH={{.Arch}} + mod_timestamp: "{{ .CommitTimestamp }}" archives: - format: tar.gz diff --git a/cmd/cli/main.go b/cmd/cli/main.go index bb95968..64d6110 100644 --- a/cmd/cli/main.go +++ b/cmd/cli/main.go @@ -66,6 +66,19 @@ func main() { Usage: "Contributoor config asset `path`", Value: "~/.contributoor", }, + cli.BoolFlag{ + Name: "release, r", + Usage: "Print release and exit", + }, + } + + app.Before = func(c *cli.Context) error { + if c.Bool("release") { + fmt.Printf("%s\n", installer.Release) + os.Exit(0) + } + + return nil } install.RegisterCommands(app, options.NewCommandOpts( diff --git a/internal/installer/installer.go b/internal/installer/installer.go new file mode 100644 index 0000000..554a3be --- /dev/null +++ b/internal/installer/installer.go @@ -0,0 +1,35 @@ +package installer + +import ( + "fmt" + "runtime" + "strings" +) + +var ( + Release = "dev" + GitCommit = "dev" + Implementation = "Contributoor-Installer" + GOOS = runtime.GOOS + GOARCH = runtime.GOARCH +) + +func Full() string { + return fmt.Sprintf("%s/%s", Implementation, Short()) +} + +func Short() string { + return fmt.Sprintf("%s-%s", Release, GitCommit) +} + +func FullVWithGOOS() string { + return fmt.Sprintf("%s/%s", Full(), GOOS) +} + +func FullVWithPlatform() string { + return fmt.Sprintf("%s/%s/%s", Full(), GOOS, GOARCH) +} + +func ImplementationLower() string { + return strings.ToLower(Implementation) +}