Usage example:
$ docker-compose build
$ docker run -it --rm -v /some-local-plugin-path:/plugin:ro buildkite/plugin-example-validator /plugin/schema.yml /plugin/readme.md
๐ Readme examples validate against the schema
Usage example:
$ docker-compose build
$ docker run -it --rm -v /some-local-plugin-path:/plugin:ro buildkite/plugin-example-validator /plugin/schema.yml /plugin/readme.md
๐ Readme examples validate against the schema
| version: '3.2' | |
| services: | |
| validator: | |
| build: . | |
| image: buildkite/plugin-example-validator |
| FROM ruby:2.5.1-alpine | |
| RUN gem install json-schema | |
| WORKDIR /src | |
| ADD example-validator.rb . | |
| ENTRYPOINT ["ruby", "example-validator.rb"] |
| require 'json-schema' | |
| schema_path = ARGV[0] | |
| readme_path = ARGV[1] | |
| unless schema_path && readme_path | |
| abort "Usage: example-validator.rb schema readme\n\nExample: example-validator.rb /plugin/schema.yml /plugin/README.md" | |
| end | |
| schema = YAML.load(File.read(schema_path)) | |
| readme = File.read(readme_path) | |
| readme.scan(/```yml(.*?)```/m).each do |(yml)| | |
| if plugin_config = yml[/plugins:.*?\n.*?\n(.*)/m, 1] | |
| JSON::Validator.validate!(schema, YAML.load(plugin_config)) | |
| end | |
| end | |
| puts "๐ Readme examples validate against the schema" |