lookup

package
v1.19.0 Latest Latest
Warning

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

Go to latest
Published: Mar 10, 2026 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrNotFound = errors.New("not found")

ErrNotFound indicates that a specified pattern or file could not be found.

Functions

func GetPath

func GetPath(root string) string

GetPath returns a colon-separated path value that can be used to set the PATH environment variable

func GetPaths

func GetPaths(root string) []string

GetPaths returns a list of paths for a specified root. These are constructed from the PATH environment variable, a default path list, and the supplied root.

func NormalizePaths

func NormalizePaths(paths ...string) []string

NormalizePaths takes a list of paths and normalizes these. Each of the elements in the list is expanded, meaning that if it consists of strings separated by the platform-specific path separator, the element is converted to a list by splitting on the separator. This allows for the contents of envvironment variables such as `PATH` or `LD_LIBRARY_PATH` to be processed allongside other explicit strings.

Types

type Factory

type Factory struct {
	// contains filtered or unexported fields
}

Factory defines a builder for locators.

func NewFactory

func NewFactory(opts ...Option) *Factory

func (Factory) NewFileLocator

func (o Factory) NewFileLocator() Locator

type Locator

type Locator interface {
	Locate(string) ([]string, error)
}

Locator defines the interface for locating files on a system.

func AsOptional

func AsOptional(l Locator) Locator

AsOptional converts the specified Locator to a Locator that does not raise an error if no candidate can be found for a specified pattern.

func AsUnique

func AsUnique(locator Locator) Locator

func First

func First(locators ...Locator) Locator

First returns a locator that returns the first non-empty match

func NewCharDeviceLocator

func NewCharDeviceLocator(opts ...Option) Locator

NewCharDeviceLocator creates a Locator that can be used to find char devices at the specified root. A logger is also specified.

func NewDirectoryLocator

func NewDirectoryLocator(opts ...Option) Locator

NewDirectoryLocator creates a Locator that can be used to find directories at the specified root.

func NewExecutableLocator

func NewExecutableLocator(logger logger.Interface, root string) Locator

NewExecutableLocator creates a locator to fine executable files in the path. A logger can also be specified.

func NewFileLocator

func NewFileLocator(opts ...Option) Locator

NewFileLocator creates a Locator that can be used to find files with the specified builder.

func NewLibraryLocator

func NewLibraryLocator(opts ...Option) Locator

NewLibraryLocator creates a library locator using the specified options. If search paths (WithSearchPaths(path1, path2, ...)) are explicitly specified a library locator using these as absolute paths are used. Otherwise the library is constructed using the following ordering, returning the first successful result:

  • attempt to locate the library / pattern using dlopen
  • attempt to locate the library from a set of predefined search paths.
  • attempt to locate the library from the ldcache.

func NewSymlinkChainLocator

func NewSymlinkChainLocator(opts ...Option) Locator

NewSymlinkChainLocator creats a locator that can be used for locating files through symlinks.

func NewSymlinkLocator

func NewSymlinkLocator(opts ...Option) Locator

NewSymlinkLocator creats a locator that can be used for locating files through symlinks.

func WithEvaluatedSymlinks(locator Locator) Locator

WithEvaluatedSymlinks wraps a locator in one that ensures that returned symlinks are resolved.

type LocatorMock

type LocatorMock struct {
	// LocateFunc mocks the Locate method.
	LocateFunc func(s string) ([]string, error)
	// contains filtered or unexported fields
}

LocatorMock is a mock implementation of Locator.

func TestSomethingThatUsesLocator(t *testing.T) {

	// make and configure a mocked Locator
	mockedLocator := &LocatorMock{
		LocateFunc: func(s string) ([]string, error) {
			panic("mock out the Locate method")
		},
	}

	// use mockedLocator in code that requires Locator
	// and then make assertions.

}

func (*LocatorMock) Locate

func (mock *LocatorMock) Locate(s string) ([]string, error)

Locate calls LocateFunc.

func (*LocatorMock) LocateCalls

func (mock *LocatorMock) LocateCalls() []struct {
	S string
}

LocateCalls gets all the calls that were made to Locate. Check the length with:

len(mockedLocator.LocateCalls())

type Option

type Option func(*Factory)

func WithCount

func WithCount(count int) Option

WithCount sets the maximum number of candidates to discover

func WithFilter

func WithFilter(assert func(string) error) Option

WithFilter sets the filter for the file locator The filter is called for each candidate file and candidates that return nil are considered.

func WithLogger

func WithLogger(logger logger.Interface) Option

WithLogger sets the logger for the file locator

func WithRoot

func WithRoot(root string) Option

WithRoot sets the root for the file locator

func WithSearchPaths

func WithSearchPaths(paths ...string) Option

WithSearchPaths sets the search paths for the file locator.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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