kcd

package
v0.0.25 Latest Latest
Warning

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

Go to latest
Published: Oct 27, 2016 License: Apache-2.0 Imports: 10 Imported by: 5

Documentation

Overview

Package kcd defines an interface and utility functions for the implementation of a Kythe compilation database.

Design documentation: kythe/docs/kythe-compilation-database.txt

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func HexDigest

func HexDigest(data []byte) string

HexDigest computes a hex-encoded SHA256 digest of data.

func IsCorpusValid

func IsCorpusValid(c string) bool

IsCorpusValid reports whether c is a valid corpus marker. A corpus is valid if it is nonempty and does not contain whitespace.

func IsRevisionValid

func IsRevisionValid(r string) bool

IsRevisionValid reports whether r is a valid revision marker. A marker is valid if it is nonempty and does not contain whitespace.

Types

type CompiledFilter

type CompiledFilter struct {
	RevisionMatches func(...string) bool
	CorpusMatches   func(...string) bool
	LanguageMatches func(...string) bool
	TargetMatches   func(...string) bool
	OutputMatches   func(...string) bool
	SourcesMatch    func(...string) bool
}

A CompiledFilter is a collection of matchers compiled from a FindFilter.

type Deleter

type Deleter interface {
	// DeleteUnit removes the specified unit from the database.
	DeleteUnit(_ context.Context, unitDigest string) error

	// DeleteFile removes the specified file from the database.
	DeleteFile(_ context.Context, fileDigest string) error

	// DeleteRevision removes the specified revision marker from the database.
	// It is an error if rev == "" or corpus == "".  All timestamps for the
	// matching revision are discarded.
	DeleteRevision(_ context.Context, revision, corpus string) error
}

Deleter expresses the capacity to delete data from a compilation database. Each of the methods of this interface should return an error that satisfies os.IsNotExist if its argument does not match any known entries. Not all writable databases must support this interface.

type FindFilter

type FindFilter struct {
	Revisions []string // Include only these revisions (exact match).
	Languages []string // Include only these languages (Kythe language names).
	Corpus    []string // Include only these corpus labels (exact match).

	Targets []*regexp.Regexp // Include only compilations for these targets.
	Sources []*regexp.Regexp // Include only compilations for these sources.
	Outputs []*regexp.Regexp // include only compilations for these outputs.
}

FindFilter gives constraints on which compilations are matched by a call to the Find method of compdb.Reader.

func (*FindFilter) Compile

func (ff *FindFilter) Compile() (*CompiledFilter, error)

Compile returns a compiled filter that matches index terms based on ff. Returns nil if ff is an empty filter.

func (*FindFilter) IsEmpty

func (ff *FindFilter) IsEmpty() bool

IsEmpty reports whether f is an empty filter, meaning it specifies no non-empty query terms.

type Index

type Index struct {
	Language string   // The Kythe language name, e.g., "c++".
	Output   string   // The output name, e.g., "bazel-out/foo.o".
	Inputs   []string // The digests of all required inputs.
	Sources  []string // The paths of all source files.
	Target   string   // The target name, e.g., "//file/base/go:file".
}

Index represents the indexable terms of a compilation.

type ReadWriteDeleter

type ReadWriteDeleter interface {
	Reader
	Writer
	Deleter
}

ReadWriteDeleter expresses the capacity to read, write, and delete data in a compilation database.

type ReadWriter

type ReadWriter interface {
	Reader
	Writer
}

ReadWriter expresses the capacity to both read and write a compilation database.

type Reader

type Reader interface {
	// Revisions calls f with each known revision matching the given filter.
	// If filter == nil or is empty, all known revisions are reported.
	// If f returns an error, that error is returned from Revisions.
	// Timestamps are returned in UTC.
	Revisions(_ context.Context, filter *RevisionsFilter, f func(Revision) error) error

	// Find calls f with the digest of each known compilation matching filter.
	// If filter == nil or is empty, no compilations are reported.
	// If f returns an error, that error is returned from Find.
	Find(_ context.Context, filter *FindFilter, f func(string) error) error

	// Units calls f with the digest, format key, and content of each specified
	// compilation that exists in the store.
	// If f returns an error, that error is returned from Units.
	Units(_ context.Context, unitDigests []string, f func(digest, key string, data []byte) error) error

	// Files calls f with the digest and content of each specified file that
	// exists in the store.
	// If f returns an error, that error is returned from Files.
	Files(_ context.Context, fileDigests []string, f func(string, []byte) error) error

	// FilesExist calls f with the digest of each specified file that exists in
	// the store.
	// If f returns an error, that error is returned from FilesExist.
	FilesExist(_ context.Context, fileDigests []string, f func(string) error) error
}

Reader represents read-only access to an underlying storage layer used to implement a compilation database.

type Revision

type Revision struct {
	Revision, Corpus string
	Timestamp        time.Time
}

A Revision represents a single revision stored in the database.

func (Revision) IsValid

func (r Revision) IsValid() error

IsValid returns an error if the revision or corpus fields are invalid.

func (Revision) String

func (r Revision) String() string

type RevisionsFilter

type RevisionsFilter struct {
	Revision string    // If set return revision markers matching this RE2.
	Corpus   string    // If set, return only revisions for this corpus.
	Until    time.Time // If nonzero, return only revisions at or before this time.
	Since    time.Time // If nonzero, return only revisions at or after this time.
}

RevisionsFilter gives constraints on which revisions are matched by a call to the Revisions method of compdb.Reader.

func (*RevisionsFilter) Compile

func (rf *RevisionsFilter) Compile() (func(Revision) bool, error)

Compile compiles the filter into a matching function that reports whether its argument matches the original filter.

type Unit

type Unit interface {
	encoding.BinaryMarshaler
	json.Marshaler

	// Index returns a the indexable terms of this unit.
	Index() Index
}

The Unit interface expresses the capabilities required to represent a compilation unit in a data store.

type Writer

type Writer interface {
	// WriteRevision records the specified revision into the store at the given
	// timestamp.  It is an error if rev.Revision == "" or rev.Corpus == "".
	// If replace is true, any previous version of this marker is discarded
	// before writing.
	WriteRevision(_ context.Context, rev Revision, replace bool) error

	// WriteUnit records unit in the store at the given revision, and returns
	// the digest of the stored unit.  It is an error if revision == "".
	WriteUnit(_ context.Context, revision, corpus, formatKey string, unit Unit) (string, error)

	// WriteFile fully reads r and records its content as a file in the store.
	// Returns the digest of the stored file.
	WriteFile(_ context.Context, r io.Reader) (string, error)
}

Writer represents write access to an underlying storage layer used to implement a compilation database.

Directories

Path Synopsis
Package kythe implements the kcd.Unit interface for Kythe compilations.
Package kythe implements the kcd.Unit interface for Kythe compilations.
Package locked implements a delegating wrapper that protects each method of the resulting kcd.Reader or kcd.ReadWriter with a mutex, so that the result is safe for concurrent use by multiple goroutines.
Package locked implements a delegating wrapper that protects each method of the resulting kcd.Reader or kcd.ReadWriter with a mutex, so that the result is safe for concurrent use by multiple goroutines.
Package memdb implements kcd.ReadWriter with an in-memory representation, suitable for testing or ephemeral service-based collections.
Package memdb implements kcd.ReadWriter with an in-memory representation, suitable for testing or ephemeral service-based collections.
Package packdb implements kcd.ReadWriter using an index pack as its backing store.
Package packdb implements kcd.ReadWriter using an index pack as its backing store.
Package testutil provides support functions for unit testing implementations of the kcd.ReadWriter interface.
Package testutil provides support functions for unit testing implementations of the kcd.ReadWriter interface.

Jump to

Keyboard shortcuts

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