-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathindex.js
60 lines (51 loc) · 1.31 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
const core = require('@actions/core');
const api = require("@apidevtools/swagger-cli");
try {
const files = core.getInput(
'files',
{ required: true }
).trim();
const space_separated = core.getInput(
'space_separated',
{
required: false,
default: '1'
}
).trim();
// Bail if no files
if (files == '') {
return core.info('No files to validate');
}
if(space_separated == 1) {
files = files.replace(/(\.ya?ml)\s/g, `$1\n`);
}
var invalidFiles = [];
var validFiles = [];
files.split(/\n/).forEach(file => {
core.info(`Validating file: ${file}`);
var error = validate(file, {
format: 2,
type: "yaml",
wrap: Infinity
});
if(error) {
invalidFiles.push(file);
} else {
validFiles.push(file);
}
});
core.setOutput('invalidFiles', invalidFiles);
core.setOutput('validFiles', validFiles);
} catch (error) {
core.setFailed(error);
}
async function validate(file, options) {
var error;
try {
await api.validate(file, options);
core.info(`${file} is valid`);
} catch (error) {
core.setFailed(`${file} is invalid\n${error.message}`);
}
return error;
}