Browse Source

Move git and url checks into pkg

This moves the IsGIT and IsURL functions out of the generic `utils`
package and into their own `urlutil` pkg.

Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
Michael Crosby 10 years ago
parent
commit
feca1b1780
5 changed files with 93 additions and 55 deletions
  1. 30 0
      pkg/urlutil/git.go
  2. 43 0
      pkg/urlutil/git_test.go
  3. 19 0
      pkg/urlutil/url.go
  4. 1 15
      utils/utils.go
  5. 0 40
      utils/utils_test.go

+ 30 - 0
pkg/urlutil/git.go

@@ -0,0 +1,30 @@
+package urlutil
+
+import "strings"
+
+var (
+	validPrefixes = []string{
+		"git://",
+		"github.com/",
+		"git@",
+	}
+)
+
+// IsGitURL returns true if the provided str is a git repository URL.
+func IsGitURL(str string) bool {
+	if IsURL(str) && strings.HasSuffix(str, ".git") {
+		return true
+	}
+	for _, prefix := range validPrefixes {
+		if strings.HasPrefix(str, prefix) {
+			return true
+		}
+	}
+	return false
+}
+
+// IsGitTransport returns true if the provided str is a git transport by inspecting
+// the prefix of the string for known protocols used in git.
+func IsGitTransport(str string) bool {
+	return IsURL(str) || strings.HasPrefix(str, "git://") || strings.HasPrefix(str, "git@")
+}

+ 43 - 0
pkg/urlutil/git_test.go

@@ -0,0 +1,43 @@
+package urlutil
+
+import "testing"
+
+var (
+	gitUrls = []string{
+		"git://github.com/docker/docker",
+		"git@github.com:docker/docker.git",
+		"git@bitbucket.org:atlassianlabs/atlassian-docker.git",
+		"https://github.com/docker/docker.git",
+		"http://github.com/docker/docker.git",
+	}
+	incompleteGitUrls = []string{
+		"github.com/docker/docker",
+	}
+)
+
+func TestValidGitTransport(t *testing.T) {
+	for _, url := range gitUrls {
+		if IsGitTransport(url) == false {
+			t.Fatalf("%q should be detected as valid Git prefix", url)
+		}
+	}
+
+	for _, url := range incompleteGitUrls {
+		if IsGitTransport(url) == true {
+			t.Fatalf("%q should not be detected as valid Git prefix", url)
+		}
+	}
+}
+
+func TestIsGIT(t *testing.T) {
+	for _, url := range gitUrls {
+		if IsGitURL(url) == false {
+			t.Fatalf("%q should be detected as valid Git url", url)
+		}
+	}
+	for _, url := range incompleteGitUrls {
+		if IsGitURL(url) == false {
+			t.Fatalf("%q should be detected as valid Git url", url)
+		}
+	}
+}

+ 19 - 0
pkg/urlutil/url.go

@@ -0,0 +1,19 @@
+package urlutil
+
+import "strings"
+
+var validUrlPrefixes = []string{
+	"http://",
+	"https://",
+}
+
+// IsURL returns true if the provided str is a valid URL by doing
+// a simple change for the transport of the url.
+func IsURL(str string) bool {
+	for _, prefix := range validUrlPrefixes {
+		if strings.HasPrefix(str, prefix) {
+			return true
+		}
+	}
+	return false
+}

+ 1 - 15
utils/utils.go

@@ -288,21 +288,7 @@ func NewHTTPRequestError(msg string, res *http.Response) error {
 	}
 }
 
-func IsURL(str string) bool {
-	return strings.HasPrefix(str, "http://") || strings.HasPrefix(str, "https://")
-}
-
-func IsGIT(str string) bool {
-	return strings.HasPrefix(str, "git://") || strings.HasPrefix(str, "github.com/") || strings.HasPrefix(str, "git@") || (strings.HasSuffix(str, ".git") && IsURL(str))
-}
-
-func ValidGitTransport(str string) bool {
-	return strings.HasPrefix(str, "git://") || strings.HasPrefix(str, "git@") || IsURL(str)
-}
-
-var (
-	localHostRx = regexp.MustCompile(`(?m)^nameserver 127[^\n]+\n*`)
-)
+var localHostRx = regexp.MustCompile(`(?m)^nameserver 127[^\n]+\n*`)
 
 // RemoveLocalDns looks into the /etc/resolv.conf,
 // and removes any local nameserver entries.

+ 0 - 40
utils/utils_test.go

@@ -97,43 +97,3 @@ func TestReadSymlinkedDirectoryToFile(t *testing.T) {
 		t.Errorf("failed to remove symlink: %s", err)
 	}
 }
-
-var (
-	gitUrls = []string{
-		"git://github.com/docker/docker",
-		"git@github.com:docker/docker.git",
-		"git@bitbucket.org:atlassianlabs/atlassian-docker.git",
-		"https://github.com/docker/docker.git",
-		"http://github.com/docker/docker.git",
-	}
-	incompleteGitUrls = []string{
-		"github.com/docker/docker",
-	}
-)
-
-func TestValidGitTransport(t *testing.T) {
-	for _, url := range gitUrls {
-		if ValidGitTransport(url) == false {
-			t.Fatalf("%q should be detected as valid Git prefix", url)
-		}
-	}
-
-	for _, url := range incompleteGitUrls {
-		if ValidGitTransport(url) == true {
-			t.Fatalf("%q should not be detected as valid Git prefix", url)
-		}
-	}
-}
-
-func TestIsGIT(t *testing.T) {
-	for _, url := range gitUrls {
-		if IsGIT(url) == false {
-			t.Fatalf("%q should be detected as valid Git url", url)
-		}
-	}
-	for _, url := range incompleteGitUrls {
-		if IsGIT(url) == false {
-			t.Fatalf("%q should be detected as valid Git url", url)
-		}
-	}
-}