core

package
v0.8.0 Latest Latest
Warning

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

Go to latest
Published: Aug 14, 2026 License: MIT Imports: 3 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 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 Dependency

type Dependency struct {
	Name        string
	Version     string
	Scope       Scope
	Integrity   string
	Direct      bool
	PURL        string
	RegistryURL string
}

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
	Dependencies []Dependency
}

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"
)

Jump to

Keyboard shortcuts

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