Skip to content

Commit 27a4c65

Browse files
authored
Merge pull request #353 from fraenkel/go_version
Check go version
2 parents e6d0621 + 8a8b76f commit 27a4c65

File tree

17 files changed

+2571
-16
lines changed

17 files changed

+2571
-16
lines changed

cmd/Gopkg.lock

Lines changed: 7 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/Gopkg.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,7 @@
4747
[[constraint]]
4848
branch = "master"
4949
name = "sigs.k8s.io/controller-tools"
50+
51+
[[constraint]]
52+
name = "github.com/Masterminds/semver"
53+
version = "1.4.2"

cmd/kubebuilder/initproject/init.go

Lines changed: 38 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,22 +20,22 @@ import (
2020
"fmt"
2121
"log"
2222
"os"
23+
"os/exec"
2324
"path/filepath"
24-
"runtime"
2525
"strconv"
2626
"strings"
2727

28+
"github.com/Masterminds/semver"
2829
"github.com/kubernetes-sigs/kubebuilder/cmd/kubebuilder/util"
2930
"github.com/spf13/cobra"
3031
"sigs.k8s.io/controller-tools/pkg/scaffold/manager"
3132
"sigs.k8s.io/controller-tools/pkg/scaffold/project"
3233
)
3334

34-
3535
type initOptions struct {
36-
domain string
37-
copyright string
38-
bazel bool
36+
domain string
37+
copyright string
38+
bazel bool
3939
controllerOnly bool
4040
projectVersion string
4141
projectOptions
@@ -52,20 +52,19 @@ func AddInit(cmd *cobra.Command) {
5252
kubebuilder init repo --domain mydomain
5353
`,
5454
Run: func(cmd *cobra.Command, args []string) {
55-
o.runInitRepo()
55+
o.runInitRepo()
5656
},
5757
}
5858

5959
v0comment := "Works only with project-version v0, "
6060
initCmd.Flags().StringVar(&o.domain, "domain", "", "domain for the API groups")
61-
initCmd.Flags().StringVar(&o.copyright, "copyright", filepath.Join("hack", "boilerplate.go.txt"), v0comment + "Location of copyright boilerplate file.")
62-
initCmd.Flags().BoolVar(&o.bazel, "bazel", false, v0comment + "if true, setup Bazel workspace artifacts")
63-
initCmd.Flags().BoolVar(&o.controllerOnly, "controller-only", false, v0comment + "if true, setup controller only")
61+
initCmd.Flags().StringVar(&o.copyright, "copyright", filepath.Join("hack", "boilerplate.go.txt"), v0comment+"Location of copyright boilerplate file.")
62+
initCmd.Flags().BoolVar(&o.bazel, "bazel", false, v0comment+"if true, setup Bazel workspace artifacts")
63+
initCmd.Flags().BoolVar(&o.controllerOnly, "controller-only", false, v0comment+"if true, setup controller only")
6464
initCmd.Flags().StringVar(&o.projectVersion, "project-version", "v1", "if set to v0, init project with kubebuilder legacy version")
6565

66-
6766
initCmd.Flags().BoolVar(
68-
&o.dep, "dep", true,"if specified, determines whether dep will be used.")
67+
&o.dep, "dep", true, "if specified, determines whether dep will be used.")
6968
o.depFlag = initCmd.Flag("dep")
7069

7170
o.prj = projectForFlags(initCmd.Flags())
@@ -78,10 +77,8 @@ kubebuilder init repo --domain mydomain
7877
}
7978

8079
func (o *initOptions) runInitRepo() {
81-
version := runtime.Version()
82-
if versionCmp(version, "go1.10") < 0 {
83-
log.Fatalf("The go version is %v, must be 1.10+", version)
84-
}
80+
checkGoVersion()
81+
8582
if !depExists() {
8683
log.Fatalf("Dep is not installed. Follow steps at: https://golang.github.io/dep/docs/installation.html")
8784
}
@@ -129,6 +126,32 @@ func (o *initOptions) runInitRepo() {
129126
"$ kubebuilder create resource\n")
130127
}
131128

129+
func checkGoVersion() {
130+
cmd := exec.Command("go", "version")
131+
out, err := cmd.Output()
132+
if err != nil {
133+
log.Fatalf("Could not execute 'go version': %v", err)
134+
}
135+
136+
split := strings.Split(string(out), " ")
137+
if len(split) < 3 {
138+
log.Fatalf("Invalid go version: %q", string(out))
139+
}
140+
goVersion := strings.TrimPrefix(split[2], "go")
141+
if ver, err := semver.NewVersion(goVersion); err != nil {
142+
if err != nil {
143+
log.Fatalf("Invalid go version %q: %v", goVersion, err)
144+
}
145+
c, err := semver.NewConstraint(">= 1.10")
146+
if err != nil {
147+
log.Fatal("Invalid constraint: %v", err)
148+
}
149+
if !c.Check(ver) {
150+
log.Fatalf("The go version is %v, must be 1.10+", goVersion)
151+
}
152+
}
153+
}
154+
132155
func execute(path, templateName, templateValue string, data interface{}) {
133156
dir, err := os.Getwd()
134157
if err != nil {

cmd/vendor/github.com/Masterminds/semver/.travis.yml

Lines changed: 27 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/vendor/github.com/Masterminds/semver/CHANGELOG.md

Lines changed: 86 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/vendor/github.com/Masterminds/semver/LICENSE.txt

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/vendor/github.com/Masterminds/semver/Makefile

Lines changed: 36 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)