fix version subcommand is not working after release build

This commit is contained in:
koba1t
2024-04-05 01:14:02 +09:00
parent 2b00d887fd
commit 277da9ed21
2 changed files with 24 additions and 9 deletions

View File

@@ -67,14 +67,22 @@ func GetProvenance() Provenance {
for _, dep := range info.Deps { for _, dep := range info.Deps {
if dep != nil && dep.Path == "sigs.k8s.io/kustomize/kustomize/v5" { if dep != nil && dep.Path == "sigs.k8s.io/kustomize/kustomize/v5" {
p.Version = GetMostRecentTag(*dep) if dep.Version != "devel" {
continue
}
v, err := GetMostRecentTag(*dep)
if err != nil {
fmt.Printf("failed to get most recent tag for %s: %v\n", dep.Path, err)
continue
}
p.Version = v
} }
} }
return p return p
} }
func GetMostRecentTag(m debug.Module) string { func GetMostRecentTag(m debug.Module) (string, error) {
for m.Replace != nil { for m.Replace != nil {
m = *m.Replace m = *m.Replace
} }
@@ -83,13 +91,13 @@ func GetMostRecentTag(m debug.Module) string {
sv, err := semver.Parse(strings.TrimPrefix(split[0], "v")) sv, err := semver.Parse(strings.TrimPrefix(split[0], "v"))
if err != nil { if err != nil {
return "unknown" return "", fmt.Errorf("failed to parse version %s: %w", m.Version, err)
} }
if len(split) > 1 && sv.Patch > 0 { if len(split) > 1 && sv.Patch > 0 {
sv.Patch -= 1 sv.Patch -= 1
} }
return fmt.Sprintf("v%s", sv.FinalizeVersion()) return fmt.Sprintf("v%s", sv.FinalizeVersion()), nil
} }
// Short returns the shortened provenance stamp. // Short returns the shortened provenance stamp.

View File

@@ -59,6 +59,7 @@ func TestGetMostRecentTag(t *testing.T) {
tests := []struct { tests := []struct {
name string name string
module debug.Module module debug.Module
isError bool
expectedTag string expectedTag string
}{ }{
{ {
@@ -72,9 +73,9 @@ func TestGetMostRecentTag(t *testing.T) {
expectedTag: "v0.0.0", expectedTag: "v0.0.0",
}, },
{ {
name: "Invalid semver string", name: "Invalid semver string",
module: mockModule("invalid-version"), module: mockModule("invalid-version"),
expectedTag: "unknown", isError: true,
}, },
{ {
name: "Valid semver with patch increment and pre-release info", name: "Valid semver with patch increment and pre-release info",
@@ -90,8 +91,14 @@ func TestGetMostRecentTag(t *testing.T) {
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
tag := provenance.GetMostRecentTag(tt.module) tag, err := provenance.GetMostRecentTag(tt.module)
assert.Equal(t, tt.expectedTag, tag) if err != nil {
if !tt.isError {
assert.NoError(t, err)
}
} else {
assert.Equal(t, tt.expectedTag, tag)
}
}) })
} }
} }