mirror of
https://github.com/BradNut/awesome-uses
synced 2025-09-08 17:40:31 +00:00
35 lines
983 B
JavaScript
35 lines
983 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()
|
|
.pattern(/(use|uses|using|setup|environment|^https:\/\/gist.github.com\/)/),
|
|
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');
|
|
}
|