-
Notifications
You must be signed in to change notification settings - Fork 10
56 lines (47 loc) · 1.47 KB
/
validate-zenodo-json.yaml
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
name: Validate Zenodo Metadata
on:
push:
paths:
- '.zenodo.json'
pull_request:
paths:
- '.zenodo.json'
jobs:
validate:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: install curl headers
run: |
sudo apt-get update
sudo apt-get install -y libcurl4-openssl-dev
- name: Setup R
uses: r-lib/actions/setup-r@v2
- name: Install Dependencies
run: install.packages("jsonvalidate")
shell: Rscript {0}
- name: Get JSON schema
run: |
curl -s -o schema.json \
https://raw.githubusercontent.com/zenodo/zenodo/master/zenodo/modules/deposit/jsonschemas/deposits/records/legacyrecord.json
- name: Validate JSON
shell: Rscript {0}
run: |
library(jsonvalidate);
validate <- jsonvalidate::json_validator('schema.json')
z <- tryCatch(validate('.zenodo.json',
verbose = TRUE,
error = FALSE,
greedy = TRUE),
error = function(e) e
)
if(!z){
errs <- attr(z, "errors", TRUE)
msg <- sprintf("'%s' %s",
errs$field,
errs$message)
cat(paste(msg, collapse = "\n"))
cat("\n")
stop("json validation failed", call. = FALSE)
}