core

package
v0.12.0 Latest Latest
Warning

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

Go to latest
Published: Sep 4, 2026 License: MIT Imports: 4 Imported by: 0

Documentation

Overview

Package core provides shared types and the parser registry.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func EstimateDeps

func EstimateDeps(size int) int

EstimateDeps estimates the number of dependencies based on file size.

func ExtractQuotedValue

func ExtractQuotedValue(line, prefix string) (string, bool)

ExtractQuotedValue extracts value from lines like: key = "value"

func ForEachLine

func ForEachLine(content string, fn func(line string) bool)

ForEachLine iterates over lines in content without allocating a slice.

func IdentifyParser

func IdentifyParser(filename string) (Parser, string, Kind)

IdentifyParser returns the first matching parser for a filename.

func NextLocation added in v0.11.0

func NextLocation(seen map[string]int, base string) string

NextLocation returns base with a numeric suffix when seen already contains it, so repeated declarations at the same logical position stay addressable.

func ParseDockerImage

func ParseDockerImage(image string) (name, version string)

ParseDockerImage parses a Docker image reference like "nginx:1.19" or "nginx@sha256:abc". When both tag and digest are present (nginx:1.19@sha256:abc), the digest is used as version and the tag is stripped from the name.

func Register

func Register(ecosystem string, kind Kind, parser Parser, matcher Matcher)

Register adds a parser to the registry.

func SupportedEcosystems

func SupportedEcosystems() []string

SupportedEcosystems returns all registered ecosystem types.

Types

type Declaration added in v0.9.0

type Declaration struct {
	Name    string
	Version string
	Scope   Scope
	// Direct reports whether the manifest declares the package as a direct
	// dependency rather than a generated or transitive requirement.
	Direct bool
	// PURL identifies the declared package without a version. Parsers may set
	// it when a file can contain references from more than one ecosystem.
	PURL     string
	Location string
	Source   Source
}

Declaration is a dependency-like reference at a stable logical location in a manifest. Version is the requirement as written in that location, before effective-model resolution or inheritance. Location is ecosystem-specific and should be treated as an opaque identity.

type Dependency

type Dependency struct {
	Name    string
	Version string
	Scope   Scope
	// Integrity is an opaque verification value derived from the manifest or
	// lockfile. Its digest encoding is ecosystem-specific.
	Integrity   string
	Direct      bool
	PURL        string
	RegistryURL string
	// Source is set only when this dependency has an explicit source override.
	// It is intentionally separate from RegistryURL because paths and Git
	// repositories are not package registries.
	Source Source
}

Dependency represents a parsed dependency from a manifest or lockfile.

type FSRootParser added in v0.5.1

type FSRootParser interface {
	ParseInRoot(filename string, content []byte, fsRoot string) (*Result, error)
}

FSRootParser is optionally implemented by parsers that can consult neighbouring files on disk (e.g. pom.xml following <relativePath> to a parent). The fsRoot argument bounds that lookup; an empty string means no filesystem access.

type Kind

type Kind string

Kind distinguishes manifest, lockfile, supplement, and vendor records.

const (
	Manifest   Kind = "manifest"
	Lockfile   Kind = "lockfile"
	Supplement Kind = "supplement"
	Vendor     Kind = "vendor"
)

type Match

type Match struct {
	Ecosystem string
	Kind      Kind
}

Match represents a file type match.

func IdentifyAllParsers

func IdentifyAllParsers(filename string) []Match

IdentifyAllParsers returns all matching parsers for a filename.

type Matcher added in v0.8.0

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

Matcher describes filename matching rules that the registry can index.

func AnyMatch

func AnyMatch(matchers ...Matcher) Matcher

AnyMatch returns a matcher that matches if any of the given matchers match.

func CustomMatch added in v0.8.0

func CustomMatch(match func(string) bool) Matcher

CustomMatch returns a matcher backed by a custom matching function.

func ExactMatch

func ExactMatch(names ...string) Matcher

ExactMatch returns a matcher for exact filename matches.

func GlobMatch

func GlobMatch(pattern string) Matcher

GlobMatch returns a matcher for glob pattern matches.

func PrefixMatch

func PrefixMatch(prefixes ...string) Matcher

PrefixMatch returns a matcher for prefix matches.

func SuffixMatch

func SuffixMatch(suffixes ...string) Matcher

SuffixMatch returns a matcher for suffix matches.

func (Matcher) Match added in v0.8.0

func (m Matcher) Match(filename string) bool

Match reports whether the matcher matches a filename.

type ParseError

type ParseError struct {
	Filename string
	Err      error
}

ParseError is returned when parsing fails.

func (*ParseError) Error

func (e *ParseError) Error() string

func (*ParseError) Unwrap

func (e *ParseError) Unwrap() error

type Parser

type Parser interface {
	Parse(filename string, content []byte) (*Result, error)
}

Parser is the interface implemented by all manifest parsers.

type Registration

type Registration struct {
	Ecosystem string
	Kind      Kind
	Parser    Parser
	Match     func(filename string) bool
}

Registration holds parser metadata.

type Result added in v0.6.0

type Result struct {
	// Name is the package's own name as declared in the manifest, when
	// the format has one. Empty for lockfiles and for manifest formats
	// that only list dependencies (Gemfile, requirements.txt, etc.).
	Name string
	// Version is the package's own version as declared in the manifest.
	Version string
	// Licenses holds the package's declared license values, without
	// normalization.
	Licenses []string
	// LicenseFile is a manifest-relative path to a declared license file.
	LicenseFile string
	// Digest is a file-level verification value whose meaning is defined by
	// the manifest format. It does not apply to individual dependencies.
	Digest       string
	Dependencies []Dependency
	Declarations []Declaration
	// Sources preserves manifest-level source declarations in source order.
	// These entries are configuration, not evidence that any dependency was
	// resolved from a particular source.
	Sources []Source
}

Result is the output of a single parser.

type Scope

type Scope string

Scope indicates when a dependency is required.

const (
	Runtime     Scope = "runtime"
	Development Scope = "development"
	Test        Scope = "test"
	Build       Scope = "build"
	Optional    Scope = "optional"
)

type Source added in v0.11.0

type Source struct {
	Kind   SourceKind
	Value  string
	Branch string
	Tag    string
	Ref    string
	Rel    string
}

Source preserves an explicit source declaration without claiming that a dependency was resolved from it. Value is the literal URL, path, or ecosystem-specific coordinate.

type SourceKind added in v0.11.0

type SourceKind string

SourceKind identifies the kind of location named by a source declaration. The value describes syntax in the manifest, not a resolved package source.

const (
	SourceRegistry SourceKind = "registry"
	SourceGit      SourceKind = "git"
	SourcePath     SourceKind = "path"
	SourceGitHub   SourceKind = "github"
	SourceURL      SourceKind = "url"
)

Jump to

Keyboard shortcuts

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