|
4 | 4 | # documentation
|
5 | 5 | #
|
6 | 6 | # SPDX-License-Identifier: MIT
|
| 7 | +# SPDX-FileCopyrightText: Copyright 2024 The SPDX Contributors |
7 | 8 |
|
8 | 9 | set -e
|
9 | 10 |
|
10 | 11 | THIS_DIR="$(dirname "$0")"
|
| 12 | +MD_DIR=docs/annexes |
| 13 | +JSON_DIR=examples/jsonld |
| 14 | + |
11 | 15 | SPDX_VERSION="3.0.1"
|
12 | 16 | SCHEMA_URL="https://spdx.org/schema/${SPDX_VERSION}/spdx-json-schema.json"
|
13 | 17 | RDF_URL="https://spdx.org/rdf/${SPDX_VERSION}/spdx-model.ttl"
|
14 | 18 | CONTEXT_URL="https://spdx.org/rdf/${SPDX_VERSION}/spdx-context.jsonld"
|
15 | 19 |
|
| 20 | +# print validation setup |
| 21 | +echo "Checking examples in" |
| 22 | +echo "Snippets : $MD_DIR" |
| 23 | +echo "Files : $JSON_DIR" |
| 24 | +echo "SPDX version : $SPDX_VERSION" |
| 25 | +echo "Schema : $SCHEMA_URL" |
| 26 | +echo "Schema resolved : $(curl -I "$SCHEMA_URL" 2>/dev/null | grep -i "location:" | awk '{print $2}')" |
| 27 | +echo "RDF : $RDF_URL" |
| 28 | +echo "RDF resolved : $(curl -I "$RDF_URL" 2>/dev/null | grep -i "location:" | awk '{print $2}')" |
| 29 | +echo "Context : $CONTEXT_URL" |
| 30 | +echo "Context resolved : $(curl -I "$CONTEXT_URL" 2>/dev/null | grep -i "location:" | awk '{print $2}')" |
| 31 | +echo "$(check-jsonschema --version)" |
| 32 | +echo -n "$(pyshacl --version)" |
| 33 | +echo "spdx3-validate version: $(spdx3-validate --version)" |
| 34 | +echo "" |
| 35 | + |
16 | 36 | check_schema() {
|
| 37 | + echo "Checking schema (check-jsonschema): $1" |
17 | 38 | check-jsonschema \
|
18 |
| - -v \ |
| 39 | + --verbose \ |
19 | 40 | --schemafile $SCHEMA_URL \
|
20 | 41 | "$1"
|
21 | 42 | }
|
22 | 43 |
|
23 | 44 | check_model() {
|
| 45 | + echo "Checking model (pyschacl): $1" |
24 | 46 | pyshacl \
|
25 |
| - -s $RDF_URL \ |
26 |
| - -e $RDF_URL \ |
| 47 | + --shacl $RDF_URL \ |
| 48 | + --ont-graph $RDF_URL \ |
27 | 49 | "$1"
|
28 | 50 | }
|
29 | 51 |
|
| 52 | +check_spdx() { |
| 53 | + echo "SPDX 3 Validating (spdx3-validate): $1" |
| 54 | + spdx3-validate --json $1 |
| 55 | +} |
| 56 | + |
30 | 57 | # Check examples in JSON files in examples/jsonld/
|
31 |
| -if [ "$(ls $THIS_DIR/../examples/jsonld/*.json 2>/dev/null)" ]; then |
32 |
| - for f in $THIS_DIR/../examples/jsonld/*.json; do |
33 |
| - echo "Checking $f" |
| 58 | +if [ "$(ls $THIS_DIR/../$JSON_DIR/*.json 2>/dev/null)" ]; then |
| 59 | + for f in $THIS_DIR/../$JSON_DIR/*.json; do |
34 | 60 | check_schema $f
|
| 61 | + echo "" |
35 | 62 | check_model $f
|
| 63 | + echo "" |
| 64 | + check_spdx $f |
| 65 | + echo "" |
36 | 66 | done
|
37 | 67 | fi
|
38 | 68 |
|
39 |
| -TEMP=$(mktemp -d) |
40 |
| - |
41 | 69 | # Check examples in inline code snippets in Markdown files in docs/annexes/
|
42 |
| -for f in $THIS_DIR/../docs/annexes/*.md; do |
| 70 | +TEMP=$(mktemp -d) |
| 71 | +for f in $THIS_DIR/../$MD_DIR/*.md; do |
43 | 72 | if ! grep -q '^```json' $f; then
|
44 | 73 | continue
|
45 | 74 | fi
|
46 |
| - echo "Checking $f" |
| 75 | + echo "Extract snippets from $f" |
47 | 76 | DEST=$TEMP/$(basename $f)
|
48 | 77 | mkdir -p $DEST
|
49 | 78 |
|
50 | 79 | # Read inline code snippets and save them in separate, numbered files.
|
51 | 80 | cat $f | awk -v DEST="$DEST" 'BEGIN{flag=0} /^```json/, $0=="```" { if (/^---$/){flag++} else if ($0 !~ /^```.*/ ) print $0 > DEST "/doc-" flag ".spdx.json"}'
|
52 | 81 |
|
53 | 82 | # Combine all JSON code snippets into a single file, with SPDX context and creation info.
|
54 |
| - echo "[" > $DEST/combined.json |
| 83 | + COMBINED_JSON = $DEST/__combined.jso |
| 84 | + echo "[" > $COMBINED_JSON |
55 | 85 |
|
56 | 86 | for doc in $DEST/*.spdx.json; do
|
57 | 87 | if ! grep -q '@context' $doc; then
|
@@ -81,11 +111,15 @@ HEREDOC
|
81 | 111 | HEREDOC
|
82 | 112 | fi
|
83 | 113 | check_schema $doc
|
84 |
| - cat $doc >> $DEST/combined.json |
85 |
| - echo "," >> $DEST/combined.json |
| 114 | + echo "" |
| 115 | + cat $doc >> $COMBINED_JSON |
| 116 | + echo "," >> $COMBINED_JSON |
86 | 117 | done
|
87 | 118 |
|
88 |
| - echo "{}]" >> $DEST/combined.json |
| 119 | + echo "{}]" >> $COMBINED_JSON |
89 | 120 |
|
90 |
| - check_model $DEST/combined.json |
| 121 | + check_model $COMBINED_JSON |
| 122 | + echo "" |
| 123 | + check_spdx $COMBINED_JSON |
| 124 | + echo "" |
91 | 125 | done
|
0 commit comments