Version: v0.0.0-...-df8cc72 Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Dec 2, 2022 License: BSD-3-Clause Imports: 18 Imported by: 0



Package source constructs public URLs that link to the source files in a module. It can be used to build references to Go source code, or to any other files in a module.

Of course, the module zip file contains all the files in the module. This package attempts to find the origin of the zip file, in a repository that is publicly readable, and constructs links to that repo. While a module zip file could in theory come from anywhere, including a non-public location, this package recognizes standard module path patterns and construct repository URLs from them, like the go command does.



This section is empty.


This section is empty.


This section is empty.


type Client

type Client struct {
	// contains filtered or unexported fields

func NewClient

func NewClient(timeout time.Duration) *Client

New constructs a *Client using the provided timeout.

func NewClientForTesting

func NewClientForTesting() *Client

NewClientForTesting returns a Client suitable for testing. It returns the same results as an ordinary client for statically recognizable paths, but always returns a nil *Info for dynamic paths (those requiring HTTP requests).

type Info

type Info struct {
	// contains filtered or unexported fields

Info holds source information about a module, used to generate URLs referring to directories, files and lines.

func FilesInfo

func FilesInfo(dir string) *Info

FilesInfo returns an Info that links to a path in the server's /files namespace. The same path needs to be installed via frontend.Server.InstallFS.

func ModuleInfo

func ModuleInfo(ctx context.Context, client *Client, modulePath, v string) (info *Info, err error)

ModuleInfo determines the repository corresponding to the module path. It returns a URL to that repo, as well as the directory of the module relative to the repo root.

ModuleInfo may fetch from arbitrary URLs, so it can be slow.

func NewGitHubInfo

func NewGitHubInfo(repoURL, moduleDir, commit string) *Info

NewGitHubInfo creates a source.Info with GitHub URL templates. It is for testing only.

func NewStdlibInfo

func NewStdlibInfo(version string) *Info

NewStdlibInfo returns a source.Info for the standard library at the given semantic version. It panics if the version does not correspond to a Go release tag. It is for testing only.

func (*Info) DirectoryURL

func (i *Info) DirectoryURL(dir string) string

DirectoryURL returns a URL for a directory relative to the module's home directory.

func (*Info) FileURL

func (i *Info) FileURL(pathname string) string

FileURL returns a URL for a file whose pathname is relative to the module's home directory.

func (*Info) LineURL

func (i *Info) LineURL(pathname string, line int) string

LineURL returns a URL referring to a line in a file relative to the module's home directory.

func (*Info) MarshalJSON

func (i *Info) MarshalJSON() (_ []byte, err error)

ToJSONForDB returns the Info encoded for storage in the database.

func (*Info) ModuleURL

func (i *Info) ModuleURL() string

ModuleURL returns a URL for the home page of the module.

func (*Info) RawURL

func (i *Info) RawURL(pathname string) string

RawURL returns a URL referring to the raw contents of a file relative to the module's home directory.

func (*Info) RepoURL

func (i *Info) RepoURL() string

RepoURL returns a URL for the home page of the repository.

func (*Info) UnmarshalJSON

func (i *Info) UnmarshalJSON(data []byte) (err error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL