44 "bytes"
55 "encoding/json"
66 "fmt"
7+ "io/fs" // Imported for fs.FileMode
78 "log"
89 "os"
910 "os/exec"
@@ -16,7 +17,13 @@ import (
1617 "golang.org/x/mod/semver"
1718)
1819
19- const k8sRepo = "k8s.io/kubernetes"
20+ const (
21+ k8sRepo = "k8s.io/kubernetes"
22+ expectedMajorMinorParts = 2
23+ goModFilePerms = fs .FileMode (0600 )
24+ minGoListVersionFields = 2
25+ minValidPatchNumber = 1
26+ )
2027
2128//nolint:gochecknoglobals
2229var goExe = "go"
@@ -69,7 +76,7 @@ func main() {
6976 }
7077 majorMinor := semver .MajorMinor (k8sVer ) // e.g., "v1.32"
7178 patch := strings .TrimPrefix (k8sVer , majorMinor + "." ) // e.g., "3"
72- if len (strings .Split (majorMinor , "." )) != 2 {
79+ if len (strings .Split (majorMinor , "." )) != expectedMajorMinorParts {
7380 log .Fatalf ("Unexpected format for MajorMinor: %s" , majorMinor )
7481 }
7582 targetStagingVer := "v0" + strings .TrimPrefix (majorMinor , "v1" ) + "." + patch // e.g., "v0.32.3"
@@ -200,7 +207,7 @@ func main() {
200207 if err != nil {
201208 log .Fatalf ("Error formatting go.mod: %v" , err )
202209 }
203- if err := os .WriteFile ("go.mod" , newModBytes , 0600 ); err != nil {
210+ if err := os .WriteFile ("go.mod" , newModBytes , goModFilePerms ); err != nil {
204211 log .Fatalf ("Error writing go.mod: %v" , err )
205212 }
206213
@@ -265,7 +272,7 @@ func getModuleVersions(modulePath string) ([]string, error) {
265272 return nil , fmt .Errorf ("error listing versions for %s: %w" , modulePath , err )
266273 }
267274 fields := strings .Fields (string (output ))
268- if len (fields ) < 2 {
275+ if len (fields ) < minGoListVersionFields {
269276 return []string {}, nil // No versions listed
270277 }
271278 return fields [1 :], nil // First field is the module path
@@ -294,8 +301,8 @@ func getLatestExistingVersion(modulePath, targetVer string) (string, error) {
294301 majorMinor := semver .MajorMinor (targetVer ) // e.g., v0.32
295302 patchStr := strings .TrimPrefix (targetVer , majorMinor + "." ) // e.g., 3
296303 var patch int
297- if _ , err := fmt .Sscan (patchStr , & patch ); err != nil || patch < 1 {
298- log .Printf ("Could not parse patch version or patch <= 0 for %s, cannot determine predecessor." , targetVer )
304+ if _ , err := fmt .Sscan (patchStr , & patch ); err != nil || patch < minValidPatchNumber {
305+ log .Printf ("Could not parse patch version or patch < %d for %s, cannot determine predecessor." , minValidPatchNumber , targetVer )
299306 return "" , nil // Cannot determine predecessor
300307 }
301308 prevPatchVer := fmt .Sprintf ("%s.%d" , majorMinor , patch - 1 ) // e.g., v0.32.2
0 commit comments