Documentation
¶
Index ¶
- Constants
- Variables
- func CacheAll(_ *Package) bool
- func NormalizeFilepathToPath(path string) string
- type BaseLoader
- type ChainedResolver
- type FilterPathHandler
- type Glob
- type GlobLoader
- type Loader
- type LocalResolver
- type MiddlewareHandler
- type MockResolver
- type NoopResolver
- type Package
- type PackageKind
- type Resolver
- type ShouldCacheFunc
Constants ¶
View Source
const ( PackageKindOther = iota PackageKindRemote = iota PackageKindFS )
Variables ¶
View Source
var ( ErrResolverPackageNotFound = errors.New("package not found") ErrResolverPackageSkip = errors.New("package has been skip") )
View Source
var ErrAdjacentSlash = errors.New("** may only be adjacent to '/'")
View Source
var FilterStdlibs = FilterPathMiddleware("stdlibs", isStdPath)
Functions ¶
func NormalizeFilepathToPath ¶
NormalizeFilepathToPath normalize path an unix like path
Types ¶
type BaseLoader ¶
type BaseLoader struct {
Resolver
}
func NewLoader ¶
func NewLoader(res ...Resolver) *BaseLoader
func (BaseLoader) Name ¶
func (l BaseLoader) Name() string
type ChainedResolver ¶
type ChainedResolver []Resolver
func (ChainedResolver) Name ¶
func (cr ChainedResolver) Name() string
type FilterPathHandler ¶
FilterPathHandler defines the function signature for filter handlers.
type Glob ¶
type Glob struct {
// contains filtered or unexported fields
}
Glob patterns can have the following syntax:
- `*` to match one or more characters in a path segment
- `**` to match any number of path segments, including none
Expanding on this:
- '/' matches one or more literal slashes.
- any other character matches itself literally.
func Parse ¶
Parse builds a Glob for the given pattern, returning an error if the pattern is invalid.
func (*Glob) StarFreeBase ¶
type GlobLoader ¶
func NewGlobLoader ¶
func NewGlobLoader(rootpath string, res ...Resolver) *GlobLoader
func (GlobLoader) MatchPaths ¶
func (l GlobLoader) MatchPaths(globs ...string) ([]string, error)
func (GlobLoader) Name ¶
func (l GlobLoader) Name() string
type Loader ¶
type Loader interface { // Load resolves package package paths and all their dependencies in the correct order. Load(paths ...string) ([]Package, error) // Resolve processes a single package path and returns the corresponding Package. Resolve(path string) (*Package, error) // Name of the loader Name() string }
type LocalResolver ¶
func NewLocalResolver ¶
func NewLocalResolver(path, dir string) *LocalResolver
func (LocalResolver) IsValid ¶
func (r LocalResolver) IsValid() bool
func (*LocalResolver) Name ¶
func (r *LocalResolver) Name() string
type MiddlewareHandler ¶
func CacheMiddleware ¶
func CacheMiddleware(shouldCache ShouldCacheFunc) MiddlewareHandler
CacheMiddleware creates a caching middleware handler.
func FilterPathMiddleware ¶
func FilterPathMiddleware(name string, filter FilterPathHandler) MiddlewareHandler
func LogMiddleware ¶
func LogMiddleware(logger *slog.Logger) MiddlewareHandler
LogMiddleware creates a logging middleware handler.
func PackageCheckerMiddleware ¶
func PackageCheckerMiddleware(logger *slog.Logger) MiddlewareHandler
PackageCheckerMiddleware creates a middleware handler for post-processing syntax.
type MockResolver ¶
type MockResolver struct {
// contains filtered or unexported fields
}
func NewMockResolver ¶
func NewMockResolver(pkgs ...*gnovm.MemPackage) *MockResolver
func (*MockResolver) Name ¶
func (m *MockResolver) Name() string
func (*MockResolver) ResolveCalls ¶
func (m *MockResolver) ResolveCalls(fset *token.FileSet, path string) int
type NoopResolver ¶
type NoopResolver struct{}
func (NoopResolver) Name ¶
func (NoopResolver) Name() string
type Package ¶
type Package struct { gnovm.MemPackage Kind PackageKind Location string }
type PackageKind ¶
type PackageKind int
type Resolver ¶
type Resolver interface { Name() string Resolve(fset *token.FileSet, path string) (*Package, error) }
func ChainResolvers ¶
func MiddlewareResolver ¶
func MiddlewareResolver(r Resolver, handlers ...MiddlewareHandler) Resolver
func NewRootResolver ¶
type ShouldCacheFunc ¶
Click to show internal directories.
Click to hide internal directories.