A Go parser and validator for publiccode.yml files.
publiccode.yml is an international standard for describing public software, which
should be placed at the root of Free/Libre and Open Source software repositories.
This parser performs syntactic and semantic validation according to the official spec.
- Go library and CLI tool (
publiccode-parser) - Supports the latest version of the
publiccode.ymlStandard publiccode-parsercan output validation errors as JSON or in errorformat friendly way- Verifies the existence of URLs by checking the response for URL fields (can be disabled)
parser, err := publiccode.NewDefaultParser()
// error handling
publiccode, err := parser.Parse("/path/to/local/dir/publiccode.yml")
// OR
// parse.Parse("https://github.com/example/example/publiccode.yml")The publiccode-parser binary can be used to validate a publiccode.yml
from the command line.
To get the latest version use:
go install github.com/italia/publiccode-parser-go/v5/publiccode-parser@latestOr get a precompiled package from the release page
Example:
$ publiccode-parser mypubliccode.yml
mypubliccode.yml:36:1: error: developmentStatus: developmentStatus must be one of the following: "concept", "development", "beta", "stable" or "obsolete"
mypubliccode.yml:48:3: warning: legal.authorsFile: This key is DEPRECATED and will be removed in the future. It's safe to drop it
mypubliccode.yml:12:5: warning: description.en.genericName: This key is DEPRECATED and will be removed in the future. It's safe to drop itRun publiccode-parser --help for the available command line flags.
The tool returns 0 in case of successful validation, 1 when the file has validation errors or can't be read and 2 when it's invoked with no file argument or an unknown flag.
With --json the same exit codes apply and the output is always a
JSON list, empty when there is nothing to report.
Contributing is always appreciated. Feel free to open issues, fork or submit a Pull Request. If you want to know more about how to add new fields, check out the publiccode.yml project and its CONTRIBUTING.md guidelines.
- publiccode-parser-php - PHP bindings for this library
- publiccode-crawler - a Go crawler that uses this library
This software is maintained by community contributors.
© 2018-present Team per la Trasformazione Digitale - Presidenza del Consiglio dei Ministri
Licensed under the EUPL 1.2. The version control system provides attribution for specific lines of code.