Пример #1
0
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
		}
	})
}
Пример #2
0
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
		}
	})
}