Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 7 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
VERSION ?= dev
VERSION ?= $(shell python3 -c "import json; print(json.load(open('.release-please-manifest.json'))['.'])" 2>/dev/null || echo dev)
LDFLAGS := -s -w -X github.com/keeperhub/cli/internal/version.Version=$(VERSION)

.PHONY: build test lint clean install
.PHONY: build test lint clean install sync-version

build:
sync-version:
@cp .release-please-manifest.json internal/version/manifest.json

build: sync-version
CGO_ENABLED=0 go build -ldflags="$(LDFLAGS)" -o bin/kh ./cmd/kh

test:
Expand All @@ -15,5 +18,5 @@ lint:
clean:
rm -rf bin/ dist/

install:
install: sync-version
CGO_ENABLED=0 go install -ldflags="$(LDFLAGS)" ./cmd/kh
8 changes: 7 additions & 1 deletion cmd/update/update.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,13 @@ func runUpdate(f *cmdutil.Factory) error {
return fmt.Errorf("checking for updates: %w", err)
}

if !found || latest.LessOrEqual(version.Version) {
if !found {
fmt.Fprintf(f.IOStreams.Out, "No release found.\n")
return nil
}

// "dev" means no version was injected via ldflags — always update.
if version.Version != "dev" && latest.LessOrEqual(version.Version) {
fmt.Fprintf(f.IOStreams.Out, "Already on latest version: %s\n", version.Version)
return nil
}
Expand Down
4 changes: 2 additions & 2 deletions cmd/update/update_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ func TestUpdateCmd_AlreadyOnLatest(t *testing.T) {
}

out := buf.String()
if !strings.Contains(out, "latest") {
t.Errorf("expected 'latest' in output, got: %q", out)
if !strings.Contains(out, "No release found") {
t.Errorf("expected 'No release found' in output, got: %q", out)
}
}
3 changes: 3 additions & 0 deletions internal/version/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
".": "0.3.0"
}
26 changes: 25 additions & 1 deletion internal/version/version.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,29 @@
package version

//go:generate cp ../../.release-please-manifest.json manifest.json

import (
_ "embed"
"encoding/json"
)

//go:embed manifest.json
var manifestBytes []byte

// Version is the current build version. Overridden at build time via ldflags:
// go build -ldflags "-X github.com/keeperhub/cli/internal/version.Version=1.0.0"
var Version = "dev"
var Version = ""

func init() {
if Version != "" {
return
}
var manifest map[string]string
if err := json.Unmarshal(manifestBytes, &manifest); err == nil {
if v, ok := manifest["."]; ok {
Version = v
return
}
}
Version = "dev"
}
6 changes: 5 additions & 1 deletion release-please-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
"release-type": "go",
"changelog-path": "CHANGELOG.md",
"packages": {
".": {}
".": {
"extra-files": [
"internal/version/manifest.json"
]
}
}
}
Loading