Documentation ¶
Overview ¶
Package packageurl implements the package-url spec
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // QualifierKeyPattern describes a valid qualifier key: // // - The key must be composed only of ASCII letters and numbers, '.', // '-' and '_' (period, dash and underscore). // - A key cannot start with a number. QualifierKeyPattern = regexp.MustCompile(`^[A-Za-z\.\-_][0-9A-Za-z\.\-_]*$`) // TypePattern describes a valid type: // // - The type must be composed only of ASCII letters and numbers, '.', // '+' and '-' (period, plus and dash). // - A type cannot start with a number. TypePattern = regexp.MustCompile(`^[A-Za-z\.\-\+][0-9A-Za-z\.\-\+]*$`) )
var ( // TypeAlpm is a pkg:alpm purl. TypeAlpm = "alpm" // TypeApk is a pkg:apk purl. TypeApk = "apk" TypeAlpine = "apk" // note: distinct from upstream (alias for apk) // TypeBitbucket is a pkg:bitbucket purl. TypeBitbucket = "bitbucket" // TypeBitnami is a pkg:bitnami purl. TypeBitnami = "bitnami" // TypeCargo is a pkg:cargo purl. TypeCargo = "cargo" // TypeCocoapods is a pkg:cocoapods purl. TypeCocoapods = "cocoapods" // TypeComposer is a pkg:composer purl. TypeComposer = "composer" // TypeConan is a pkg:conan purl. TypeConan = "conan" // TypeConda is a pkg:conda purl. TypeConda = "conda" // TypeCran is a pkg:cran purl. TypeCran = "cran" // TypeDebian is a pkg:deb purl. TypeDebian = "deb" // TypeDocker is a pkg:docker purl. TypeDocker = "docker" // TypeGem is a pkg:gem purl. TypeGem = "gem" // TypeGeneric is a pkg:generic purl. TypeGeneric = "generic" // TypeGithub is a pkg:github purl. TypeGithub = "github" // TypeGolang is a pkg:golang purl. TypeGolang = "golang" // TypeHackage is a pkg:hackage purl. TypeHackage = "hackage" // TypeHex is a pkg:hex purl. TypeHex = "hex" // TypeHuggingface is pkg:huggingface purl. TypeHuggingface = "huggingface" // TypeLuaRocks is a pkg:luarocks purl. TypeLuaRocks = "luarocks" // TypeMLFlow is pkg:mlflow purl. TypeMLFlow = "mlflow" // TypeMaven is a pkg:maven purl. TypeMaven = "maven" // TypeNPM is a pkg:npm purl. TypeNPM = "npm" // TypeNuget is a pkg:nuget purl. TypeNuget = "nuget" // TypeOCI is a pkg:oci purl. TypeOCI = "oci" // TypePub is a pkg:pub purl. TypePub = "pub" // TypePyPi is a pkg:pypi purl. TypePyPi = "pypi" // TypeQpkg is a pkg:qpkg purl. TypeQpkg = "qpkg" // TypeRPM is a pkg:rpm purl. TypeRPM = "rpm" // TypeSWID is pkg:swid purl TypeSWID = "swid" // TypeSwift is pkg:swift purl. TypeSwift = "swift" // KnownTypes is a map of types that are officially supported by the spec. // See https://github.com/package-url/purl-spec/blob/master/PURL-TYPES.rst#known-purl-types KnownTypes = map[string]struct{}{ TypeAlpm: {}, TypeApk: {}, TypeAlpine: {}, TypeBitbucket: {}, TypeBitnami: {}, TypeCargo: {}, TypeCocoapods: {}, TypeComposer: {}, TypeConan: {}, TypeConda: {}, TypeCran: {}, TypeDebian: {}, TypeDocker: {}, TypeGem: {}, TypeGeneric: {}, TypeGithub: {}, TypeGolang: {}, TypeHackage: {}, TypeHex: {}, TypeHuggingface: {}, TypeLuaRocks: {}, TypeMaven: {}, TypeMLFlow: {}, TypeNPM: {}, TypeNuget: {}, TypeOCI: {}, TypePub: {}, TypePyPi: {}, TypeQpkg: {}, TypeRPM: {}, TypeSWID: {}, TypeSwift: {}, } TypeApache = "apache" TypeAndroid = "android" TypeAtom = "atom" TypeBower = "bower" TypeBrew = "brew" TypeBuildroot = "buildroot" TypeCarthage = "carthage" TypeChef = "chef" TypeChocolatey = "chocolatey" TypeClojars = "clojars" TypeCoreos = "coreos" TypeCpan = "cpan" TypeCtan = "ctan" TypeCrystal = "crystal" TypeDrupal = "drupal" TypeDtype = "dtype" TypeDub = "dub" TypeElm = "elm" TypeEclipse = "eclipse" TypeGitea = "gitea" TypeGitlab = "gitlab" TypeGradle = "gradle" TypeGuix = "guix" TypeHaxe = "haxe" TypeHelm = "helm" TypeJulia = "julia" TypeMelpa = "melpa" TypeMeteor = "meteor" TypeNim = "nim" TypeNix = "nix" TypeOpam = "opam" TypeOpenwrt = "openwrt" TypeOsgi = "osgi" TypeOTP = "otp" // note: distinct from upstream TypeP2 = "p2" TypePear = "pear" TypePecl = "pecl" TypePERL6 = "perl6" TypePlatformio = "platformio" TypeEbuild = "ebuild" TypePuppet = "puppet" TypeSourceforge = "sourceforge" TypeSublime = "sublime" TypeTerraform = "terraform" TypeVagrant = "vagrant" TypeVim = "vim" TypeWORDPRESS = "wordpress" TypeYocto = "yocto" // CandidateTypes is a map of types that are not yet officially supported by the spec, // but are being considered for inclusion. // See https://github.com/package-url/purl-spec/blob/master/PURL-TYPES.rst#other-candidate-types-to-define CandidateTypes = map[string]struct{}{ TypeApache: {}, TypeAndroid: {}, TypeAtom: {}, TypeBower: {}, TypeBrew: {}, TypeBuildroot: {}, TypeCarthage: {}, TypeChef: {}, TypeChocolatey: {}, TypeClojars: {}, TypeCoreos: {}, TypeCpan: {}, TypeCtan: {}, TypeCrystal: {}, TypeDrupal: {}, TypeDtype: {}, TypeDub: {}, TypeElm: {}, TypeEclipse: {}, TypeGitea: {}, TypeGitlab: {}, TypeGradle: {}, TypeGuix: {}, TypeHaxe: {}, TypeHelm: {}, TypeJulia: {}, TypeMelpa: {}, TypeMeteor: {}, TypeNim: {}, TypeNix: {}, TypeOpam: {}, TypeOpenwrt: {}, TypeOsgi: {}, TypeOTP: {}, TypeP2: {}, TypePear: {}, TypePecl: {}, TypePERL6: {}, TypePlatformio: {}, TypeEbuild: {}, TypePuppet: {}, TypeSourceforge: {}, TypeSublime: {}, TypeTerraform: {}, TypeVagrant: {}, TypeVim: {}, TypeWORDPRESS: {}, TypeYocto: {}, } )
These are the known purl types as defined in the spec. Some of these require special treatment during parsing. https://github.com/package-url/purl-spec#known-purl-types
Functions ¶
This section is empty.
Types ¶
type PackageURL ¶
type PackageURL struct { Type string Namespace string Name string Version string Qualifiers Qualifiers Subpath string }
PackageURL is the struct representation of the parts that make a package url
func FromString ¶
func FromString(purl string) (PackageURL, error)
FromString parses a valid package url string into a PackageURL structure
func NewPackageURL ¶
func NewPackageURL(purlType, namespace, name, version string, qualifiers Qualifiers, subpath string) *PackageURL
NewPackageURL creates a new PackageURL struct instance based on input
func (*PackageURL) Normalize ¶
func (p *PackageURL) Normalize() error
Normalize converts p to its canonical form, returning an error if p is invalid.
func (PackageURL) String ¶
func (p PackageURL) String() string
func (*PackageURL) ToString ¶
func (p *PackageURL) ToString() string
ToString returns the human-readable instance of the PackageURL structure. This is the literal purl as defined by the spec.
type Qualifiers ¶
type Qualifiers []Qualifier
Qualifiers is a slice of key=value pairs, with order preserved as it appears in the package URL.
func QualifiersFromMap ¶
func QualifiersFromMap(mm map[string]string) Qualifiers
QualifiersFromMap constructs a Qualifiers slice from a string map. To get a deterministic qualifier order (despite maps not providing any iteration order guarantees) the returned Qualifiers are sorted in increasing order of key.
func (Qualifiers) Map ¶
func (q Qualifiers) Map() map[string]string
Map converts a Qualifiers struct to a string map.
func (*Qualifiers) Normalize ¶
func (q *Qualifiers) Normalize() error
func (Qualifiers) String ¶
func (q Qualifiers) String() string