diff --git a/pkg/host/github.go b/pkg/host/github.go index 29a7a851a59fd616ff8cfb58eb6eeef52f77cf81..bc3197180f40d587006ddaad481db0ebe30afbc7 100644 --- a/pkg/host/github.go +++ b/pkg/host/github.go @@ -1,33 +1,36 @@ package host import ( - "path/filepath" "regexp" "strings" ) +const githubStorageURL = "https://codeload.github.com" + // ZipURL returns the URL of the zip archive given a github repository URL. -func ZipURL(url string) string { +func ZipURL(repo string) string { var version = "master" - url = strings.TrimSuffix(strings.TrimPrefix(url, "/"), "/") + repo = strings.TrimSuffix(strings.TrimPrefix(repo, "/"), "/") zipRegex, _ := regexp.Compile(`zip/(\S+)$`) - if zipRegex.MatchString(url) { - return url + if zipRegex.MatchString(repo) { + return repo } // So this could identify a port number, but since we only support github // I don't believe using it as a version modifier is a problem. Though // perhaps we should use something else instead? - if strings.Contains(url, ":") { - parts := strings.SplitAfter(url, ":") + if strings.Contains(repo, ":") { + parts := strings.SplitAfter(repo, ":") - url = parts[0] + repo = parts[0] version = parts[1] - url = strings.TrimSuffix(url, ":") + repo = strings.TrimSuffix(repo, ":") } - return "https://codeload.github.com/" + filepath.Join(url, "/zip/"+version) + urlTokens := []string{githubStorageURL, repo, "zip", version} + + return strings.Join(urlTokens, "/") }