Documentation
¶
Index ¶
- Constants
- Variables
- func ParseEbuildVariables(filename string) map[string]string
- func ParseMetadata(path string) (interface{}, error)
- func ParseMetadataBytes(data []byte) (interface{}, error)
- func ParseMetadataFromReader(r io.Reader) (interface{}, error)
- func ResolveVariables(text string, variables map[string]string) string
- func UpsertManifest(manifestPath string, newEntry *ManifestEntry) error
- func WriteLayoutConf(lc *LayoutConf, path string) error
- func WriteMetadata(path string, data interface{}) error
- type Affected
- type Author
- type Background
- type Cat
- type CatMetadata
- type Checksums
- type Description
- type Doc
- type DownloadProgress
- type Ebuild
- type Email
- type Familyname
- type Flag
- type GLSA
- type GLSADescription
- type GLSAMetadata
- type Hash
- type Impact
- type LayoutConf
- type LayoutConfEntry
- type License
- type Location
- type LongDescription
- type Maintainer
- type Manifest
- type ManifestEntry
- type Member
- type Mirror
- type MirrorGroup
- type MirrorURI
- type Mirrors
- type Name
- type Package
- type PackageMove
- type PackageUpdate
- type ParsingMode
- type Pkg
- type PkgMetadata
- type Product
- type Project
- type Projects
- type Realname
- type References
- type RemoteID
- type Repositories
- type Repository
- type RepositoryDescription
- type RepositoryOwner
- type RepositorySource
- type Resolution
- type Revised
- type Service
- type Slot
- type Slots
- type Subproject
- type URI
- type URIEntry
- type Unaffected
- type Upstream
- type Use
- type User
- type UserList
- type Vulnerable
- type Workaround
Constants ¶
const ( HashBlake2b = "BLAKE2B" HashBlake2s = "BLAKE2S" HashMd5 = "MD5" HashRmd160 = "RMD160" HashSha1 = "SHA1" HashSha256 = "SHA256" HashSha3_256 = "SHA3_256" HashSha3_512 = "SHA3_512" HashSha512 = "SHA512" )
Variables ¶
var AllHashes = []string{ HashBlake2b, HashBlake2s, HashMd5, HashRmd160, HashSha1, HashSha256, HashSha3_256, HashSha3_512, HashSha512, }
Functions ¶
func ParseEbuildVariables ¶
ParseEbuildVariables extracts PN, PV, P from the ebuild filename.
func ParseMetadata ¶
ParseMetadata parses a metadata.xml file and returns either a PkgMetadata or CatMetadata pointer (as interface{}), or an error.
func ParseMetadataBytes ¶
ParseMetadataBytes parses metadata from a byte slice.
func ParseMetadataFromReader ¶
ParseMetadataFromReader parses metadata from an io.Reader.
func ResolveVariables ¶
ResolveVariables replaces ${VAR} and $VAR in the text with values from variables map.
func UpsertManifest ¶
func UpsertManifest(manifestPath string, newEntry *ManifestEntry) error
UpsertManifest updates or inserts a manifest entry.
func WriteLayoutConf ¶ added in v0.0.17
func WriteLayoutConf(lc *LayoutConf, path string) error
WriteLayoutConf writes a LayoutConf back to a file
func WriteMetadata ¶
WriteMetadata writes the metadata to a file with proper headers.
Types ¶
type Background ¶ added in v0.0.15
type Background struct {
Text string `xml:",innerxml"`
}
type Cat ¶
type Cat struct {
// Text of the category.
Text string `xml:",innerxml"`
}
Cat represents a cross-linking category. Note: This struct is not directly used in LongDescription to preserve mixed content via InnerXML, but is provided as part of the model definition.
type CatMetadata ¶
type CatMetadata struct {
XMLName xml.Name `xml:"catmetadata"`
LongDescription []LongDescription `xml:"longdescription"`
}
CatMetadata represents metadata for a category. Source: https://github.com/gentoo-mirror/gentoo/blob/stable/metadata/dtd/metadata.dtd
func (*CatMetadata) String ¶
func (c *CatMetadata) String() string
type Description ¶
type Description struct {
// Text of the description.
Text string `xml:",innerxml"`
}
Description represents a description of a maintainer or change.
type Doc ¶
type Doc struct {
// URL of the documentation.
URL string `xml:",chardata"`
// Lang specifies the language of the documentation.
Lang string `xml:"lang,attr,omitempty"`
}
Doc represents a documentation URL.
type DownloadProgress ¶
type Ebuild ¶
type Ebuild struct {
Path string
Vars map[string]string
SrcUri []URIEntry
Mode ParsingMode
}
func ParseEbuild ¶
ParseEbuild parses an ebuild file with the specified mode.
type Email ¶
type Email struct {
// Text of the email address.
Text string `xml:",innerxml"`
}
Email represents an email address.
type Familyname ¶ added in v0.0.15
type Flag ¶
type Flag struct {
// Name of the USE flag.
Name string `xml:"name,attr"`
// Text of the flag.
Text string `xml:",innerxml"`
// Restrict specifies restrictions on the applicability of the flag.
Restrict string `xml:"restrict,attr,omitempty"`
}
Flag represents a USE flag.
type GLSA ¶ added in v0.0.15
type GLSA struct {
XMLName xml.Name `xml:"glsa"`
ID string `xml:"id,attr"`
Title string `xml:"title"`
Synopsis string `xml:"synopsis"`
Product Product `xml:"product"`
Announced string `xml:"announced"`
Revised Revised `xml:"revised"`
Bugs []string `xml:"bug"`
Access string `xml:"access,omitempty"`
Affected Affected `xml:"affected"`
Background *Background `xml:"background"`
Description Description `xml:"description"`
Impact Impact `xml:"impact"`
Workaround Workaround `xml:"workaround"`
Resolution Resolution `xml:"resolution"`
References References `xml:"references"`
License *License `xml:"license"`
Metadata []GLSAMetadata `xml:"metadata"`
}
GLSA represents a Gentoo Linux Security Advisory. Source: https://github.com/gentoo-mirror/gentoo/blob/stable/metadata/dtd/glsa.dtd
func ParseGLSA ¶ added in v0.0.15
ParseGLSA parses a glsa.xml file and returns a GLSA pointer, or an error.
func ParseGLSABytes ¶ added in v0.0.15
ParseGLSABytes parses GLSA from a byte slice.
type GLSADescription ¶ added in v0.0.15
type GLSADescription struct {
Text string `xml:",innerxml"`
}
type GLSAMetadata ¶ added in v0.0.15
type LayoutConf ¶ added in v0.0.17
type LayoutConf struct {
Entries []LayoutConfEntry
}
LayoutConf represents the contents of a metadata/layout.conf file
func ParseLayoutConf ¶ added in v0.0.17
func ParseLayoutConf(path string) (*LayoutConf, error)
ParseLayoutConf parses a metadata/layout.conf file
func (*LayoutConf) GetValue ¶ added in v0.0.17
func (lc *LayoutConf) GetValue(key string) string
GetValue returns the value for a specific key
func (*LayoutConf) GetValuesAsSlice ¶ added in v0.0.17
func (lc *LayoutConf) GetValuesAsSlice(key string) []string
GetValuesAsSlice returns the value for a specific key split by spaces
func (*LayoutConf) SetValue ¶ added in v0.0.17
func (lc *LayoutConf) SetValue(key, value string)
SetValue sets the value for a specific key, updating it if it exists or appending if it doesn't
func (*LayoutConf) UnsetValue ¶ added in v0.0.17
func (lc *LayoutConf) UnsetValue(key string)
UnsetValue removes a specific key
type LayoutConfEntry ¶ added in v0.0.17
LayoutConfEntry represents a single key-value entry with its preceding comments
type LongDescription ¶
type LongDescription struct {
// Body contains the inner XML of the long description.
// We use InnerXML to preserve mixed content (text + <pkg>/<cat> tags) and ensure circularity.
Body string `xml:",innerxml"`
// Lang specifies the language of the description.
Lang string `xml:"lang,attr,omitempty"`
// Restrict specifies restrictions on the applicability of the description.
Restrict string `xml:"restrict,attr,omitempty"`
}
LongDescription represents a long description of a package or category.
type Maintainer ¶
type Maintainer struct {
// Email of the maintainer.
Email string `xml:"email"`
// Name of the maintainer.
Name string `xml:"name,omitempty"`
// Description of the maintainer.
Description string `xml:"description,omitempty"`
// Type of the maintainer: person, project, or unknown.
Type string `xml:"type,attr,omitempty"`
// Proxied indicates whether the maintainer is proxied: yes, no, or proxy.
Proxied string `xml:"proxied,attr,omitempty"`
// Status of the upstream maintainer: active, inactive, or unknown.
Status string `xml:"status,attr,omitempty"`
// Restrict specifies restrictions on the applicability of the maintainer.
Restrict string `xml:"restrict,attr,omitempty"`
}
Maintainer represents a maintainer of a package.
type Manifest ¶
type Manifest struct {
Entries []*ManifestEntry
}
func ParseManifest ¶
func ParseManifestContent ¶
func (*Manifest) AddOrReplace ¶
func (m *Manifest) AddOrReplace(entry *ManifestEntry)
func (*Manifest) GetEntry ¶
func (m *Manifest) GetEntry(filename string) *ManifestEntry
GetEntry returns the entry for a filename if it exists
type ManifestEntry ¶
func NewManifestEntry ¶
func NewManifestEntry(typeStr, filename string, size int64, hashes ...Hash) *ManifestEntry
func ParseManifestEntry ¶
func ParseManifestEntry(line string) (*ManifestEntry, error)
func (*ManifestEntry) AddHash ¶
func (e *ManifestEntry) AddHash(hType, hValue string)
func (*ManifestEntry) GetHash ¶
func (e *ManifestEntry) GetHash(hType string) string
func (*ManifestEntry) String ¶
func (e *ManifestEntry) String() string
type MirrorGroup ¶ added in v0.0.15
type Mirrors ¶ added in v0.0.15
type Mirrors struct {
XMLName xml.Name `xml:"mirrors"`
MirrorGroups []MirrorGroup `xml:"mirrorgroup"`
}
Mirrors represents a set of mirror groups. Source: https://github.com/gentoo-mirror/gentoo/blob/stable/metadata/dtd/mirrors.dtd
func ParseMirrors ¶ added in v0.0.15
ParseMirrors parses a mirrors.xml file and returns a Mirrors pointer, or an error.
func ParseMirrorsBytes ¶ added in v0.0.15
ParseMirrorsBytes parses Mirrors from a byte slice.
type Name ¶
type Name struct {
// Text of the name.
Text string `xml:",innerxml"`
}
Name represents a name of a person or maintainer.
type Package ¶ added in v0.0.15
type Package struct {
Name string `xml:"name,attr"`
Auto string `xml:"auto,attr"` // yes|no
Arch string `xml:"arch,attr"`
Vulnerable []Vulnerable `xml:"vulnerable"`
Unaffected []Unaffected `xml:"unaffected"`
}
type PackageMove ¶ added in v0.0.17
type PackageUpdate ¶ added in v0.0.17
type PackageUpdate struct {
Moves []PackageMove
}
func ParseUpdatesDir ¶ added in v0.0.17
func ParseUpdatesDir(dir string) (*PackageUpdate, error)
type ParsingMode ¶
type ParsingMode uint
const ( ParseMetadataOnly ParsingMode = iota + 1 // Parse only filename-based metadata (PN, PV, etc.) ParseVariables // Parse variable definitions in the file ParseFull // Parse everything (e.g. SRC_URI) )
func (ParsingMode) String ¶
func (m ParsingMode) String() string
type Pkg ¶
type Pkg struct {
// Text of the package.
Text string `xml:",innerxml"`
}
Pkg represents a cross-linking package. Note: This struct is not directly used in LongDescription to preserve mixed content via InnerXML, but is provided as part of the model definition.
type PkgMetadata ¶
type PkgMetadata struct {
XMLName xml.Name `xml:"pkgmetadata"`
Maintainers []Maintainer `xml:"maintainer"`
LongDescription []LongDescription `xml:"longdescription"`
Slots *Slots `xml:"slots"`
StabilizeAllArches bool `xml:"stabilize-allarches,omitempty"`
Use []Use `xml:"use"`
Upstream *Upstream `xml:"upstream"`
}
PkgMetadata represents metadata for a package. Source: https://github.com/gentoo-mirror/gentoo/blob/stable/metadata/dtd/metadata.dtd
func (*PkgMetadata) String ¶
func (p *PkgMetadata) String() string
type Projects ¶ added in v0.0.15
Projects represents a list of projects. Source: https://github.com/gentoo-mirror/gentoo/blob/stable/metadata/dtd/projects.dtd
func ParseProjects ¶ added in v0.0.15
ParseProjects parses a projects.xml file and returns a Projects pointer, or an error.
func ParseProjectsBytes ¶ added in v0.0.15
ParseProjectsBytes parses Projects from a byte slice.
type Realname ¶ added in v0.0.15
type Realname struct {
Fullname string `xml:"fullname,attr,omitempty"`
Firstname string `xml:"firstname"`
Familyname Familyname `xml:"familyname"`
}
type References ¶ added in v0.0.15
type References struct {
URIs []URI `xml:"uri"`
}
type RemoteID ¶
type RemoteID struct {
// Text of the remote identifier.
Text string `xml:",innerxml"`
// Type of the remote identifier.
Type string `xml:"type,attr"`
}
RemoteID represents a remote identifier for a package. Supported types: bitbucket, codeberg, cpan, cpan-module, cpe, cran, ctan, freedesktop-gitlab, gentoo, github, gitlab, gnome-gitlab, google-code, hackage, heptapod, kde-invent, launchpad, osdn, pear, pecl, pypi, rubygems, savannah, savannah-nongnu, sourceforge, sourcehut, vim
type Repositories ¶ added in v0.0.15
type Repositories struct {
XMLName xml.Name `xml:"repositories"`
Version string `xml:"version,attr"`
Repositories []Repository `xml:"repo"`
}
Repositories represents a list of Gentoo repositories. Source: https://github.com/gentoo-mirror/gentoo/blob/stable/metadata/dtd/repositories.dtd
func ParseRepositories ¶ added in v0.0.15
func ParseRepositories(path string) (*Repositories, error)
ParseRepositories parses a repositories.xml file and returns a Repositories pointer, or an error.
func ParseRepositoriesBytes ¶ added in v0.0.15
func ParseRepositoriesBytes(data []byte) (*Repositories, error)
ParseRepositoriesBytes parses Repositories from a byte slice.
func ParseRepositoriesFromReader ¶ added in v0.0.15
func ParseRepositoriesFromReader(r io.Reader) (*Repositories, error)
ParseRepositoriesFromReader parses Repositories from an io.Reader.
type Repository ¶ added in v0.0.15
type Repository struct {
Priority string `xml:"priority,attr,omitempty"`
Quality string `xml:"quality,attr"` // core|stable|testing|experimental|graveyard
Status string `xml:"status,attr"` // official|unofficial
Name string `xml:"name"`
Descriptions []RepositoryDescription `xml:"description"`
LongDescriptions []RepositoryDescription `xml:"longdescription"`
Homepage string `xml:"homepage,omitempty"`
Owners []RepositoryOwner `xml:"owner"`
Sources []RepositorySource `xml:"source"`
Feeds []string `xml:"feed"`
}
type RepositoryDescription ¶ added in v0.0.15
type RepositoryOwner ¶ added in v0.0.15
type RepositorySource ¶ added in v0.0.15
type Resolution ¶ added in v0.0.15
type Resolution struct {
Text string `xml:",innerxml"`
}
type Slot ¶
type Slot struct {
// Name of the SLOT.
Name string `xml:"name,attr"`
// Text of the slot.
Text string `xml:",innerxml"`
}
Slot represents a particular SLOT.
type Slots ¶
type Slots struct {
// Slot elements.
Slot []Slot `xml:"slot"`
// Subslots of the package.
Subslots string `xml:"subslots,omitempty"`
// Lang specifies the language of the slots.
Lang string `xml:"lang,attr,omitempty"`
}
Slots represents the description of a package's SLOTs.
type Subproject ¶ added in v0.0.15
type Unaffected ¶ added in v0.0.15
type Upstream ¶
type Upstream struct {
// Maintainers of the upstream.
Maintainers []Maintainer `xml:"maintainer"`
// URL of the upstream changelog.
Changelog string `xml:"changelog,omitempty"`
// Documentation URL of the upstream.
Doc []Doc `xml:"doc"`
// URL or email address to report bugs.
BugsTo string `xml:"bugs-to,omitempty"`
// Remote identifiers for the package.
RemoteID []RemoteID `xml:"remote-id"`
}
Upstream represents upstream metadata information.
type Use ¶
type Use struct {
// Flags representing the USE flags.
Flags []Flag `xml:"flag"`
// Lang specifies the language of the USE description.
Lang string `xml:"lang,attr,omitempty"`
}
Use represents the description of USE flags for a package.
type User ¶ added in v0.0.15
type User struct {
Username string `xml:"username,attr"`
Realname Realname `xml:"realname"`
PGPKeys []string `xml:"pgpkey"`
Aliases []string `xml:"alias"`
Emails []string `xml:"email"`
Joined []string `xml:"joined"`
Retired []string `xml:"retired"`
Status string `xml:"status,omitempty"`
Roles string `xml:"roles,omitempty"`
Location *Location `xml:"location"`
}
type UserList ¶ added in v0.0.15
UserList represents a list of users. Source: https://github.com/gentoo-mirror/gentoo/blob/stable/metadata/dtd/userinfo.dtd
func ParseUserInfo ¶ added in v0.0.15
ParseUserInfo parses a userinfo.xml file and returns a UserList pointer, or an error.
func ParseUserInfoBytes ¶ added in v0.0.15
ParseUserInfoBytes parses UserList from a byte slice.
type Vulnerable ¶ added in v0.0.15
type Workaround ¶ added in v0.0.15
type Workaround struct {
Text string `xml:",innerxml"`
}