Merge pull request #227 from hectorj/fix-226

Fix EnsureGopath when multiple Gopaths
diff --git a/action/ensure.go b/action/ensure.go
index af62dd1..c57bbac 100644
--- a/action/ensure.go
+++ b/action/ensure.go
@@ -5,6 +5,7 @@
 	"os"
 	"os/exec"
 	"path"
+	"strings"
 
 	"github.com/Masterminds/glide/cfg"
 	"github.com/Masterminds/glide/msg"
@@ -83,15 +84,22 @@
 //
 // Otherwise it returns the value of GOPATH.
 func EnsureGopath() string {
-	gp := os.Getenv("GOPATH")
-	if gp == "" {
+	gps := gpath.Gopaths()
+	if len(gps) == 0 {
 		msg.Die("$GOPATH is not set.")
 	}
-	_, err := os.Stat(path.Join(gp, "src"))
-	if err != nil {
-		msg.Error("Could not find %s/src.\n", gp)
-		msg.Info("As of Glide 0.5/Go 1.5, this is required.\n")
-		msg.Die("Wihtout src, cannot continue. %s", err)
+
+	for _, gp := range gps {
+		_, err := os.Stat(path.Join(gp, "src"))
+		if err != nil {
+			msg.Warn("%s", err)
+			continue
+		}
+		return gp
 	}
-	return gp
+
+	msg.Error("Could not find any of %s/src.\n", strings.Join(gps, "/src, "))
+	msg.Info("As of Glide 0.5/Go 1.5, this is required.\n")
+	msg.Die("Wihtout src, cannot continue.")
+	return ""
 }