diff --git a/main.go b/main.go index 67eac82..bd7a330 100644 --- a/main.go +++ b/main.go @@ -21,11 +21,13 @@ import ( ) var ( - httpFlag = flag.String("http", ":8080", "Serve HTTP at given address") - httpsFlag = flag.String("https", "", "Serve HTTPS at given address") - certFlag = flag.String("cert", "", "Use the provided TLS certificate") - keyFlag = flag.String("key", "", "Use the provided TLS key") - acmeFlag = flag.String("acme", "", "Auto-request TLS certs and store in given directory") + httpFlag = flag.String("http", ":8080", "Serve HTTP at given address") + httpsFlag = flag.String("https", "", "Serve HTTPS at given address") + certFlag = flag.String("cert", "", "Use the provided TLS certificate") + keyFlag = flag.String("key", "", "Use the provided TLS key") + acmeFlag = flag.String("acme", "", "Auto-request TLS certs and store in given directory") + domainFlag = flag.String("domain", "gopkg.in", "Domain name") + userFlag = flag.String("username", "", "Github username") ) var httpServer = &http.Server{ @@ -185,11 +187,13 @@ var redirect = map[repoBase]repoBase{ // GitHubRoot returns the repository root at GitHub, without a schema. func (repo *Repo) GitHubRoot() string { + if *userFlag != "" { + return "github.com/" + *userFlag + "/" + repo.Name + } if repo.User == "" { return "github.com/go-" + repo.Name + "/" + repo.Name - } else { - return "github.com/" + repo.User + "/" + repo.Name } + return "github.com/" + repo.User + "/" + repo.Name } // GitHubTree returns the repository tree name at GitHub for the selected version. @@ -218,20 +222,19 @@ func (repo *Repo) GopkgVersionRoot(version Version) string { v := version.String() if repo.OldFormat { if repo.User == "" { - return "gopkg.in/" + v + "/" + repo.Name + return *domainFlag + "/" + v + "/" + repo.Name } else { - return "gopkg.in/" + repo.User + "/" + v + "/" + repo.Name + return *domainFlag + "/" + repo.User + "/" + v + "/" + repo.Name } } else { if repo.User == "" { - return "gopkg.in/" + repo.Name + "." + v + return *domainFlag + "/" + repo.Name + "." + v } else { - return "gopkg.in/" + repo.User + "/" + repo.Name + "." + v + return *domainFlag + "/" + repo.User + "/" + repo.Name + "." + v } } } - var patternOld = regexp.MustCompile(`^/(?:([a-z0-9][-a-z0-9]+)/)?((?:v0|v[1-9][0-9]*)(?:\.0|\.[1-9][0-9]*){0,2}(?:-unstable)?)/([a-zA-Z][-a-zA-Z0-9]*)(?:\.git)?((?:/[a-zA-Z][-a-zA-Z0-9]*)*)$`) var patternNew = regexp.MustCompile(`^/(?:([a-zA-Z0-9][-a-zA-Z0-9]+)/)?([a-zA-Z][-.a-zA-Z0-9]*)\.((?:v0|v[1-9][0-9]*)(?:\.0|\.[1-9][0-9]*){0,2}(?:-unstable)?)(?:\.git)?((?:/[a-zA-Z0-9][-.a-zA-Z0-9]*)*)$`)