Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // ErrInvalidFilePath indicates that a file path outside of the tree or // repository root directory was specified in the config. ErrInvalidFilePath = errors.New("invalid file path specified in config (above config root dir or source unit dir)") )
var Filename = "Srcfile"
Filename is the name of the file that configures a directory tree or repository. It is intended to be used by repository authors.
var Overrides = map[string]*Repository{ "sourcegraph.com/sourcegraph/sourcegraph": { URI: "sourcegraph.com/sourcegraph/sourcegraph", Tree: Tree{ SkipDirs: []string{"app/node_modules", "app/bower_components"}, SkipUnits: []struct{ Name, Type string }{ {Name: ".", Type: "ruby"}, {Name: "app", Type: "CommonJSPackage"}, }, }, }, "code.google.com/p/rsc": { URI: "code.google.com/p/rsc", Tree: Tree{ SkipDirs: []string{"cmd/numbers", "cc"}, }, }, "github.com/emicklei/go-restful": { URI: "github.com/emicklei/go-restful", Tree: Tree{ SkipDirs: []string{"examples"}, }, }, "github.com/golang/go": { URI: "github.com/golang/go", Tree: Tree{ Config: map[string]interface{}{"GOROOT": "."}, SkipDirs: []string{"test", "misc", "doc", "lib", "include"}, PreConfigCommands: []string{` if [ -d /home/srclib ]; then curl -L 'https://storage.googleapis.com/golang/go1.4.1.linux-amd64.tar.gz' > /tmp/go1.4.tgz && mkdir /home/srclib/go1.4 && tar -xf /tmp/go1.4.tgz -C /home/srclib/go1.4 --strip-components=1 fi && cd src ./make.bash `}, }, }, "code.google.com/p/go": { URI: "code.google.com/p/go", Tree: Tree{ Config: map[string]interface{}{"GOROOT": "."}, SkipDirs: []string{"test", "misc", "doc", "lib", "include"}, PreConfigCommands: []string{"echo devel > VERSION && cd src && ./make.bash"}, }, }, "github.com/joyent/node": { URI: "github.com/joyent/node", Tree: Tree{ SkipDirs: []string{"tools", "deps", "test", "src"}, SourceUnits: []*unit.SourceUnit{ { Name: "node", Type: "CommonJSPackage", Dir: ".", Files: []string{"lib/*.js"}, Config: map[string]interface{}{ "jsg": map[string]interface{}{ "plugins": map[string]interface{}{ "node": map[string]string{"coreModulesDir": "lib/"}, "$(JSG_DIR)/node_modules/tern-node-api-doc/node-api-doc": map[string]string{ "apiDocDir": "doc/api/", "apiSrcDir": "lib/", "generateJSPath": "tools/doc/generate.js", }, }, }, }, }, }, }, }, "github.com/ruby/ruby": { URI: "github.com/ruby/ruby", Tree: Tree{ SkipDirs: []string{"test", "ext"}, SourceUnits: []*unit.SourceUnit{ { Name: ".", Type: "ruby", Dir: ".", Config: map[string]interface{}{"noCachedStdlibYardoc": false}, Files: []string{ "*.c", "lib/*.rb", "lib/cgi/*.rb", "lib/cgi/session/*.rb", "lib/drb/*.rb", "lib/irb/*.rb", "lib/irb/cmd/*.rb", "lib/irb/ext/*.rb", "lib/irb/lc/*.rb", "lib/irb/lc/ja/*.rb", "lib/matrix/*.rb", "lib/minitest/*.rb", "lib/net/*.rb", "lib/net/http/*.rb", "lib/optparse/*.rb", "lib/racc/*.rb", "lib/rake/*.rb", "lib/rake/contrib/*.rb", "lib/rake/ext/*.rb", "lib/rake/loaders/*.rb", "lib/rbconfig/*.rb", "lib/rdoc/*.rb", "lib/rdoc/context/*.rb", "lib/rdoc/generator/*.rb", "lib/rdoc/markdown/*.rb", "lib/rdoc/markup/*.rb", "lib/rdoc/parser/*.rb", "lib/rdoc/rd/*.rb", "lib/rdoc/ri/*.rb", "lib/rdoc/stats/*.rb", "lib/rexml/*.rb", "lib/rexml/dtd/*.rb", "lib/rexml/formatters/*.rb", "lib/rexml/light/*.rb", "lib/rexml/parsers/*.rb", "lib/rexml/validation/*.rb", "lib/rinda/*.rb", "lib/rss/*.rb", "lib/rss/content/*.rb", "lib/rss/dublincore/*.rb", "lib/rss/maker/*.rb", "lib/rubygems/*.rb", "lib/rubygems/commands/*.rb", "lib/rubygems/core_ext/*.rb", "lib/rubygems/ext/*.rb", "lib/rubygems/package/*.rb", "lib/rubygems/package/tar_reader/*.rb", "lib/rubygems/request_set/*.rb", "lib/rubygems/resolver/*.rb", "lib/rubygems/security/*.rb", "lib/rubygems/source/*.rb", "lib/rubygems/util/*.rb", "lib/shell/*.rb", "lib/test/*.rb", "lib/test/unit/*.rb", "lib/uri/*.rb", "lib/webrick/*.rb", "lib/webrick/httpauth/*.rb", "lib/webrick/httpservlet/*.rb", "lib/xmlrpc/*.rb", "lib/yaml/*.rb", }, }, }, }, }, }
Functions ¶
This section is empty.
Types ¶
type External ¶
type External struct { // Scanners is the default set of scanners to use. If not specified, all // scanners in the SRCLIBPATH will be used. Scanners []*srclib.ToolRef }
An External configuration file, represented by this struct, can set system- and user-level settings for srclib.
func SrclibPathConfig ¶
SrclibPathConfig gets the srclib path configuration (which lists all available scanners). It reads it from SRCLIBPATH/.srclibconfig if that file exists, and otherwise it walks SRCLIBPATH for available scanners.
type Repository ¶
type Repository struct { // URI is the repository's clone URI. URI string `json:",omitempty"` // Tree is the configuration for the top-level directory tree in the // repository. Tree }
Repository represents the config for an entire repository.
func ReadRepository ¶
func ReadRepository(dir string, repoURI string) (*Repository, error)
ReadRepository parses and validates the configuration for a repository. If no Srcfile exists, it returns the default configuration for the repository. If an overridden configuration is specified for the repository (hard-coded in the Go code), then it is used instead of the Srcfile or the default configuration.
type Tree ¶
type Tree struct { // SourceUnits is a list of source units in the repository, either specified // manually in the Srcfile or discovered automatically by the scanner. SourceUnits []*unit.SourceUnit `json:",omitempty"` // Scanners to use to scan for source units in this tree. Scanners []*srclib.ToolRef `json:",omitempty"` // PreConfigCommands is a list of commands (passed to `sh -c`) that should // be run on the tree before configuration occurs (after the initial config // is read from the Srcfile but before scanners are run). The commands are // run at the top-level directory of the tree. // // If `src config` is run with the program execution method ("-m // program"), the commands are executed normally. If it is run // with the Docker execution method ("-m docker"), the commands // are run in a Docker container with the tree mounted read-write // at /src. Currently this container runs Ubuntu 14.04 with the // git, mercurial, curl, and build-essential packages installed // (plus others that are temporarily installed until we develop a // better way of handling things that need pre-config commands). // // This is the only accepted way to modify the tree during processing. Tools // shouldn't modify the tree because they run concurrently. If they run in // Docker, they're unable to modify the tree because it is mounted // read-only. PreConfigCommands []string `json:",omitempty"` // SkipDirs is a list of directory trees that are skipped. That is, any // source units (produced by scanners) whose Dir is in a skipped dir tree is // not processed further. SkipDirs []string `json:",omitempty"` // SkipUnits is a list of source units that are skipped. That is, // any scanned source units whose name and type exactly matches a // name and type pair in SkipUnits is skipped. SkipUnits []struct{ Name, Type string } `json:",omitempty"` // Config is an arbitrary key-value property map. Properties are copied // verbatim to each source unit that is scanned in this tree. Config map[string]interface{} `json:",omitempty"` }
Tree represents the config for a directory and its subdirectories.
func ReadCached ¶
func ReadCached(bdfs vfs.FileSystem) (*Tree, error)
ReadCached reads a Tree's configuration from all of its source unit definition files (which may either be in a local VFS rooted at a .srclib-cache/<COMMITID> dir, or a remote VFS). It does not read the Srcfile; the Srcfile's directives are already accounted for in the cached source unit definition files.
bdfs should be a VFS obtained from a call to (buildstore.RepoBuildStore).Commit.