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" |