From 6caa7833cb18840fcbf8c2fcffcd8a7acf38fab8 Mon Sep 17 00:00:00 2001 From: David McKay <david@rawkode.com> Date: Tue, 14 Jun 2016 09:41:55 +0100 Subject: [PATCH] Allowing a version/branch string to be parsed in download url (#18) Allows a version/branch string to be parsed in download url --- pkg/host/github.go | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/pkg/host/github.go b/pkg/host/github.go index e6dd9d3..29a7a85 100644 --- a/pkg/host/github.go +++ b/pkg/host/github.go @@ -2,16 +2,32 @@ package host import ( "path/filepath" + "regexp" "strings" ) // ZipURL returns the URL of the zip archive given a github repository URL. func ZipURL(url string) string { + var version = "master" + url = strings.TrimSuffix(strings.TrimPrefix(url, "/"), "/") - if strings.HasSuffix(url, "zip/master") { + zipRegex, _ := regexp.Compile(`zip/(\S+)$`) + if zipRegex.MatchString(url) { return url } - return "https://codeload.github.com/" + filepath.Join(url, "/zip/master") + // 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, ":") + + url = parts[0] + version = parts[1] + + url = strings.TrimSuffix(url, ":") + } + + return "https://codeload.github.com/" + filepath.Join(url, "/zip/"+version) } -- GitLab