diff --git a/github.go b/github.go index fff8fde..2a7661a 100644 --- a/github.go +++ b/github.go @@ -8,13 +8,17 @@ import ( ) // isGitHubURL tests a string to determine if it is a well-structured GitHub URL -func isGitHubURL(s string) bool { - u, err := url.ParseRequestURI(s) - if err != nil { - return false +func isGitHubURL(s string) (string, bool) { + if strings.HasPrefix(s, "github.com/") { + s = "https://" + s } - return strings.ToLower(u.Host) == "github.com" + u, err := url.ParseRequestURI(s) + if err != nil { + return "", false + } + + return u.String(), strings.ToLower(u.Host) == "github.com" } // findGitHubREADME tries to find the correct README filename in a repository diff --git a/main.go b/main.go index 2ab8192..0578d2b 100644 --- a/main.go +++ b/main.go @@ -34,19 +34,19 @@ func readerFromArg(s string) (io.ReadCloser, error) { return os.Stdin, nil } + if u, ok := isGitHubURL(s); ok { + resp, err := findGitHubREADME(u) + if err != nil { + return nil, err + } + return resp.Body, nil + } + if u, err := url.ParseRequestURI(s); err == nil { if !strings.HasPrefix(u.Scheme, "http") { return nil, fmt.Errorf("%s is not a supported protocol", u.Scheme) } - if isGitHubURL(s) { - resp, err := findGitHubREADME(s) - if err != nil { - return nil, err - } - return resp.Body, nil - } - resp, err := http.Get(u.String()) if err != nil { return nil, err