|
|
@@ -33,6 +33,8 @@ var (
|
|
|
noupgrade bool
|
|
|
)
|
|
|
|
|
|
+const minGoVersion = 1.3
|
|
|
+
|
|
|
func main() {
|
|
|
log.SetOutput(os.Stdout)
|
|
|
log.SetFlags(0)
|
|
|
@@ -53,6 +55,8 @@ func main() {
|
|
|
flag.BoolVar(&noupgrade, "no-upgrade", false, "Disable upgrade functionality")
|
|
|
flag.Parse()
|
|
|
|
|
|
+ checkRequiredGoVersion()
|
|
|
+
|
|
|
if check() != nil {
|
|
|
setup()
|
|
|
}
|
|
|
@@ -122,6 +126,25 @@ func check() error {
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
+func checkRequiredGoVersion() {
|
|
|
+ ver := run("go", "version")
|
|
|
+ re := regexp.MustCompile(`go version go(\d+\.\d+)`)
|
|
|
+ if m := re.FindSubmatch(ver); len(m) == 2 {
|
|
|
+ vs := string(m[1])
|
|
|
+ // This is a standard go build. Verify that it's new enough.
|
|
|
+ f, err := strconv.ParseFloat(vs, 64)
|
|
|
+ if err != nil {
|
|
|
+ log.Printf("*** Could parse Go version out of %q.\n*** This isn't known to work, proceed on your own risk.", vs)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if f < minGoVersion {
|
|
|
+ log.Fatalf("*** Go version %.01f is less than required %.01f.\n*** This is known not to work, not proceeding.", f, minGoVersion)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ log.Printf("*** Unknown Go version %q.\n*** This isn't known to work, proceed on your own risk.", ver)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
func setup() {
|
|
|
runPrint("go", "get", "-v", "code.google.com/p/go.tools/cmd/cover")
|
|
|
runPrint("go", "get", "-v", "code.google.com/p/go.tools/cmd/vet")
|