feat: add action to validate data.js

Closes #141
This commit is contained in:
Andrew Luca 2020-01-10 18:48:46 +02:00
parent 7ccd603fbf
commit ad8cc4a9be
No known key found for this signature in database
GPG key ID: ACB54C50A4E2BBE9
2 changed files with 56 additions and 0 deletions

25
.github/workflows/data-validate.yml vendored Normal file
View file

@ -0,0 +1,25 @@
name: Validate data.js
on:
pull_request:
paths: src/data.js
env:
CI: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/setup-node@v1
with:
node-version: 13.x
- name: Install validation libs
run: |
npm install -g @hapi/joi@17.0.2
npm install -g @actions/core@1.2.0
npm link @hapi/joi
npm link @actions/core
- name: Validate data.js
run: node ./scripts/data-validate.js

31
scripts/data-validate.js Normal file
View file

@ -0,0 +1,31 @@
import Joi from '@hapi/joi';
import core from '@actions/core';
import data from '../src/data.js';
const schema = Joi.object({
name: Joi.string().required(),
description: Joi.string().required(),
url: Joi.string()
.uri()
.required(),
country: Joi.string().required(),
twitter: Joi.string(),
emoji: Joi.string(),
computer: Joi.string().valid('apple', 'windows', 'linux'),
phone: Joi.string().valid('iphone', 'ios', 'android'),
tags: Joi.array().items(Joi.string()),
});
const errors = data
.map(person => schema.validate(person))
.filter(v => v.error)
.map(v => v.error);
errors.forEach(e => {
core.error(e._original.name);
e.details.forEach(d => core.error(d.message));
});
if (errors.length) {
core.setFailed('Action failed with validation errors, see logs');
}