Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var SupportedVersions = []string{"0", "0.2", "0.2.0", "0.2.1", "0.2.2", "0.3", "0.3.0", "0.4", "0.4.0", "0.5.0", "0.5"}
SupportedVersions lists the publiccode.yml versions this parser supports.
Functions ¶
This section is empty.
Types ¶
type ContactV0 ¶
type ContactV0 struct {
Name string `json:"name" validate:"required" yaml:"name"`
Email *string `json:"email,omitempty" validate:"omitempty,email" yaml:"email,omitempty"`
Affiliation *string `json:"affiliation,omitempty" yaml:"affiliation,omitempty"`
Phone *string `json:"phone,omitempty" validate:"omitempty" yaml:"phone,omitempty"`
}
ContactV0 is a contact info maintaining the software.
type ContractorV0 ¶
type ContractorV0 struct {
Name string `json:"name" validate:"required" yaml:"name"`
Email *string `json:"email,omitempty" validate:"omitempty,email" yaml:"email,omitempty"`
Website *URL `json:"website,omitempty" validate:"omitnil,url_http_url" yaml:"website,omitempty"`
Until string `json:"until" validate:"required,date" yaml:"until"`
}
ContractorV0 is an entity or entities, if any, that are currently contracted for maintaining the software.
type DependencyV0 ¶
type DependencyV0 struct {
Name string `json:"name" validate:"required,gt=0" yaml:"name"`
VersionMin *string `json:"versionMin,omitempty" yaml:"versionMin,omitempty"`
VersionMax *string `json:"versionMax,omitempty" yaml:"versionMax,omitempty"`
Optional *bool `json:"optional,omitempty" yaml:"optional,omitempty"`
Version *string `json:"version,omitempty" yaml:"version,omitempty"`
}
DependencyV0 describes system-level dependencies required to install and use this software.
type DescV0 ¶
type DescV0 struct {
LocalisedName *string `json:"localisedName,omitempty" yaml:"localisedName,omitempty"`
GenericName string `json:"genericName" validate:"umax=35" yaml:"genericName"`
ShortDescription string `json:"shortDescription" validate:"required,umax=150" yaml:"shortDescription"`
LongDescription string `json:"longDescription,omitempty" validate:"required,umin=150,umax=10000" yaml:"longDescription,omitempty"`
Documentation *URL `json:"documentation,omitempty" validate:"omitnil,url_http_url" yaml:"documentation,omitempty"`
APIDocumentation *URL `json:"apiDocumentation,omitempty" validate:"omitnil,url_http_url" yaml:"apiDocumentation,omitempty"`
Features *[]string `json:"features,omitempty" validate:"gt=0,dive" yaml:"features,omitempty"`
Screenshots []string `json:"screenshots,omitempty" yaml:"screenshots,omitempty"`
Videos []*URL `json:"videos,omitempty" validate:"dive,omitnil,url_http_url" yaml:"videos,omitempty"`
Awards []string `json:"awards,omitempty" yaml:"awards,omitempty"`
}
DescV0 is a general description of the software.
type Domain ¶
type Domain struct {
// Domains.yml data
Host string `yaml:"host"`
UseTokenFor []string `yaml:"use-token-for"`
BasicAuth []string `yaml:"basic-auth"`
}
Domain is a single code hosting service.
type ITSectionV0 ¶
type ITSectionV0 struct {
CountryExtensionVersion *string `json:"countryExtensionVersion" validate:"omitnil,oneof=0.2 1.0" yaml:"countryExtensionVersion"`
Conforme *struct {
LineeGuidaDesign *bool `json:"lineeGuidaDesign,omitempty" yaml:"lineeGuidaDesign,omitempty"`
ModelloInteroperabilita *bool `json:"modelloInteroperabilita,omitempty" yaml:"modelloInteroperabilita,omitempty"`
MisureMinimeSicurezza *bool `json:"misureMinimeSicurezza,omitempty" yaml:"misureMinimeSicurezza,omitempty"`
GDPR *bool `json:"gdpr,omitempty" yaml:"gdpr,omitempty"`
} `json:"conforme,omitempty" yaml:"conforme,omitempty"`
Riuso struct {
CodiceIPA string `json:"codiceIPA,omitempty" validate:"omitempty,is_italian_ipa_code" yaml:"codiceIPA,omitempty"`
} `yaml:"riuso,omitempty" json:"riuso,omitempty"`
Piattaforme struct {
SPID bool `json:"spid" yaml:"spid"`
PagoPa bool `json:"pagopa" yaml:"pagopa"`
CIE bool `json:"cie" yaml:"cie"`
ANPR bool `json:"anpr" yaml:"anpr"`
Io bool `json:"io" yaml:"io"`
} `yaml:"piattaforme" json:"piattaforme"`
}
type OrganisationV0 ¶ added in v5.2.0
type OrganisationV0 struct {
Name *string `json:"name,omitempty" yaml:"name,omitempty"`
URI string `json:"uri" validate:"required,organisation_uri" yaml:"uri"`
}
OrganisationV0 describes a real world organisation.
type ParseError ¶
type ParseError struct {
Reason string
}
ParseError is generic parse error.
func (ParseError) Error ¶
func (e ParseError) Error() string
type Parser ¶
type Parser struct {
// contains filtered or unexported fields
}
Parser is a helper class for parsing publiccode.yml files.
func NewDefaultParser ¶
func NewParser ¶
func NewParser(config ParserConfig) (*Parser, error)
NewParser initializes and returns a new Parser object following the settings in ParserConfig.
func (*Parser) ParseStream ¶
func (p *Parser) ParseStream(in io.Reader) (PublicCode, error)
ParseStream reads the data and tries to parse it. Returns an error if fails.
type ParserConfig ¶
type ParserConfig struct {
// DisableNetwork disables all network tests (eg. URL existence). This
// results in much faster parsing.
DisableNetwork bool
// DisableExternalChecks disables ALL the additional checks on external files
// and resources, local or remote (eg. existence, images actually being images, etc.).
//
// It implies DisableNetwork = true.
DisableExternalChecks bool
// Domain will have domain specific settings, including basic auth if provided
// this will avoid strong quota limit imposed by code hosting platform
Domain Domain
// The name of the branch used to check for existence of the files referenced
// in the publiccode.yml
Branch string
// The URL used as base of relative files in publiccode.yml (eg. logo)
// It can be a local file with the 'file' scheme.
BaseURL string
}
type PublicCodeV0 ¶
type PublicCodeV0 struct {
PubliccodeYamlVersion string `` /* 135-byte string literal not displayed */
Name string `json:"name" validate:"required" yaml:"name"`
ApplicationSuite string `json:"applicationSuite,omitempty" yaml:"applicationSuite,omitempty"`
URL *URL `json:"url" validate:"required,url_url" yaml:"url"`
LandingURL *URL `json:"landingURL,omitempty" validate:"omitnil,url_http_url" yaml:"landingURL,omitempty"`
IsBasedOn UrlOrUrlArray `json:"isBasedOn,omitempty" validate:"omitempty,dive,url_url" yaml:"isBasedOn,omitempty"`
SoftwareVersion string `json:"softwareVersion,omitempty" yaml:"softwareVersion,omitempty"`
ReleaseDate *string `json:"releaseDate" validate:"omitnil,date" yaml:"releaseDate"`
Logo *string `json:"logo,omitempty" yaml:"logo,omitempty"`
MonochromeLogo *string `json:"monochromeLogo,omitempty" yaml:"monochromeLogo,omitempty"`
Organisation *OrganisationV0 `json:"organisation,omitempty" yaml:"organisation,omitempty"`
InputTypes *[]string `json:"inputTypes,omitempty" validate:"omitempty,dive,is_mime_type" yaml:"inputTypes,omitempty"`
OutputTypes *[]string `json:"outputTypes,omitempty" validate:"omitempty,dive,is_mime_type" yaml:"outputTypes,omitempty"`
Platforms []string `json:"platforms" validate:"gt=0" yaml:"platforms"`
Categories *[]string `json:"categories,omitempty" validate:"omitempty,dive,is_category_v0" yaml:"categories,omitempty"`
UsedBy *[]string `json:"usedBy,omitempty" yaml:"usedBy,omitempty"`
FundedBy *[]OrganisationV0 `json:"fundedBy,omitempty" validate:"omitempty,dive" yaml:"fundedBy,omitempty"`
Roadmap *URL `json:"roadmap,omitempty" validate:"omitnil,url_http_url" yaml:"roadmap,omitempty"`
DevelopmentStatus string `json:"developmentStatus" validate:"required,oneof=concept development beta stable obsolete" yaml:"developmentStatus"`
SoftwareType string `` /* 201-byte string literal not displayed */
IntendedAudience *struct {
Scope *[]string `json:"scope,omitempty" validate:"omitempty,dive,is_scope_v0" yaml:"scope,omitempty"`
Countries *[]string `json:"countries,omitempty" validate:"omitempty,dive,iso3166_1_alpha2_lower_or_upper" yaml:"countries,omitempty"`
UnsupportedCountries *[]string `` /* 133-byte string literal not displayed */
} `json:"intendedAudience,omitempty" yaml:"intendedAudience,omitempty"`
Description map[string]DescV0 `json:"description" validate:"gt=0,bcp47_keys,dive" yaml:"description"`
Legal struct {
License string `json:"license" validate:"required,is_spdx_expression" yaml:"license"`
MainCopyrightOwner *string `json:"mainCopyrightOwner,omitempty" yaml:"mainCopyrightOwner,omitempty"`
RepoOwner *string `json:"repoOwner,omitempty" yaml:"repoOwner,omitempty"`
AuthorsFile *string `json:"authorsFile,omitempty" yaml:"authorsFile,omitempty"`
} `yaml:"legal" json:"legal"`
Maintenance struct {
Type string `json:"type" validate:"required,oneof=internal contract community none" yaml:"type"`
Contractors *[]ContractorV0 `` /* 139-byte string literal not displayed */
Contacts *[]ContactV0 `` /* 136-byte string literal not displayed */
} `yaml:"maintenance" json:"maintenance"`
Localisation struct {
LocalisationReady *bool `json:"localisationReady" validate:"required" yaml:"localisationReady"`
AvailableLanguages []string `json:"availableLanguages" validate:"required,gt=0,dive,bcp47_language_tag" yaml:"availableLanguages"`
} `yaml:"localisation" json:"localisation"`
DependsOn *struct {
Open *[]DependencyV0 `json:"open,omitempty" validate:"omitempty,dive" yaml:"open,omitempty"`
Proprietary *[]DependencyV0 `json:"proprietary,omitempty" validate:"omitempty,dive" yaml:"proprietary,omitempty"`
Hardware *[]DependencyV0 `json:"hardware,omitempty" validate:"omitempty,dive" yaml:"hardware,omitempty"`
} `json:"dependsOn,omitempty" yaml:"dependsOn,omitempty"`
IT *ITSectionV0 `json:"IT,omitempty" yaml:"IT,omitempty"`
// Don't use, this is provided for backwards compatibility.
// IT always has the same data.
It *ITSectionV0 `json:"it,omitempty" yaml:"it,omitempty"`
}
PublicCodeV0 defines how a publiccode.yml v0.x is structured
func (PublicCodeV0) ToYAML ¶
func (p PublicCodeV0) ToYAML() ([]byte, error)
func (PublicCodeV0) Url ¶
func (p PublicCodeV0) Url() *URL
func (PublicCodeV0) Version ¶
func (p PublicCodeV0) Version() uint
type URL ¶
func (*URL) MarshalJSON ¶
func (*URL) MarshalYAML ¶
func (*URL) UnmarshalYAML ¶
UnmarshalYAML implements the yaml.Unmarshaler interface for URLs.
type UrlOrUrlArray ¶
type UrlOrUrlArray []*URL
func (*UrlOrUrlArray) UnmarshalYAML ¶
func (a *UrlOrUrlArray) UnmarshalYAML(unmarshal func(interface{}) error) error
type ValidationError ¶
type ValidationError struct {
Key string `json:"key"`
Description string `json:"description"`
Line int `json:"line"`
Column int `json:"column"`
}
func (ValidationError) Error ¶
func (e ValidationError) Error() string
func (ValidationError) MarshalJSON ¶
func (e ValidationError) MarshalJSON() ([]byte, error)
type ValidationResults ¶
type ValidationResults []error
func (ValidationResults) Error ¶
func (vr ValidationResults) Error() string
type ValidationWarning ¶
type ValidationWarning ValidationError
func (ValidationWarning) Error ¶
func (e ValidationWarning) Error() string
func (ValidationWarning) MarshalJSON ¶
func (e ValidationWarning) MarshalJSON() ([]byte, error)