awesome-uses/scripts/data-validate.js
2020-01-10 13:44:02 -05:00

34 lines
903 B
JavaScript

import Joi from '@hapi/joi';
import core from '@actions/core';
import data from '../src/data.js';
import flags from './flags.js';
const schema = Joi.object({
name: Joi.string().required(),
description: Joi.string().required(),
url: Joi.string()
.uri()
.required(),
country: Joi.string()
.valid(...flags)
.required(),
twitter: Joi.string().pattern(new RegExp(/^@?(\w){1,15}$/)),
emoji: Joi.string().allow(''),
computer: Joi.string().valid('apple', 'windows', 'linux'),
phone: Joi.string().valid('iphone', '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');
}