func init() { presenter.RegisterProvider(func(repo *pkg.Repo) presenter.Presenter { switch { case strings.HasPrefix(repo.Remote.RepoURL, "https://code.googlesource.com/"): return newGitilesPresenter(repo) default: return nil } }) }
func init() { SetClient(nil) presenter.RegisterProvider(func(repo *pkg.Repo) presenter.Presenter { switch { case strings.HasPrefix(repo.Root, "github.com/"): elems := strings.Split(repo.Root, "/") if len(elems) != 3 { return nil } return newGitHubPresenter(repo, elems[1], elems[2]) // azul3d.org package (an instance of semver-based domain, see https://azul3d.org/semver). // Once there are other semver based Go packages, consider adding more generalized support. case strings.HasPrefix(repo.Root, "azul3d.org/"): githubOwner, githubRepo, err := azul3dOrgImportPathToGitHub(repo.Root) if err != nil { return nil } return newGitHubPresenter(repo, githubOwner, githubRepo) // gopkg.in package. case strings.HasPrefix(repo.Root, "gopkg.in/"): githubOwner, githubRepo, err := gopkgInImportPathToGitHub(repo.Root) if err != nil { return nil } return newGitHubPresenter(repo, githubOwner, githubRepo) // Underlying GitHub remote. case strings.HasPrefix(repo.Remote.RepoURL, "https://github.com/"): elems := strings.Split(strings.TrimSuffix(repo.Remote.RepoURL[len("https://"):], ".git"), "/") if len(elems) != 3 { return nil } return newGitHubPresenter(repo, elems[1], elems[2]) // Go repo remote has a GitHub mirror repo. case strings.HasPrefix(repo.Remote.RepoURL, "https://go.googlesource.com/"): repoName := repo.Remote.RepoURL[len("https://go.googlesource.com/"):] return newGitHubPresenter(repo, "golang", repoName) default: return nil } }) }