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.yml
Standard publiccode-parser
can 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("file:///path/to/local/dir/publiccode.yml")
// OR
// parse.Parse("https://github.com/example/example/publiccode.yml")
The publiccode-parser
binary which be used for validating a publiccode.yml
from the command line.
To get the latest development version use:
go install github.com/italia/publiccode-parser-go/v4/publiccode-parser@latest
publiccode-parser mypubliccode.yml
To get the latest stable version go to the release page and grab the one for your arch.
Run publiccode-parser --help
for the available command line flags.
The tool returns 0 in case of successful validation, 1 otherwise.
You can easily validate your files using Docker on your local machine or in your CI pipeline:
docker run -i italia/publiccode-parser-go /dev/stdin < publiccode.yml
The image is available on Dockerhub. You can also build your own running:
docker build -t italia/publiccode-parser-go .
The examples assume that your publiccode.yml
file is on your local machine,
at /home/my-user/publiccodes/publiccode.yml
-
Validate and print the canonicalized file
docker run -i italia/publiccode-parser-go -export /dev/stdout /dev/stdin < publiccode.yml
-
Validate a publiccode file named
publiccode.yml
in/home/user
docker run -v /home/user:/go/src/files italia/publiccode-parser-go
-
Validate a publiccode file named
/opt/publiccodes/my-amazing-code.yaml
docker run -v /opt/publiccodes:/go/src/files italia/publiccode-parser-go my-amazing-code.yaml
-
Validate
publiccode.yml
without using the network (fe. checking URLs are reachable)docker run -v /opt/publiccodes/publiccodes:/files italia/publiccode-parser-go -no-network publiccode.yml
-
Debugging, access the container interactive shell, overriding the entrypoint
docker run -it --entrypoint /bin/sh italia/publiccode-parser-go
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 CONTRIBUTING.md. In order to support other country-specific extensions in addition to Italy some refactoring might be needed.
- publiccode-crawler - a Go crawler that uses this library
This software is maintained by the Developers Italia team.
© 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.