-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathvalidate.sh
executable file
·62 lines (54 loc) · 1.83 KB
/
validate.sh
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
61
62
#!/bin/bash
if [ "$#" -ne 2 ]; then
echo "Validate a JSON or YAML file against a JSON schema"
echo "Usage: ./validate.sh <schema_collection> <path_to_file>"
echo
echo "Currently supported schema collections:"
echo " - applications"
echo " - component-descriptions"
echo " - controller-descriptions"
echo " - interfaces"
echo
exit 0
fi
SCHEMA="$1"
SCHEMA_ENTRYPOINT=""
if [ "$SCHEMA" == "applications" ]; then
echo "Using AICA application schema"
SCHEMA_ENTRYPOINT="application.schema.json"
elif [ "$SCHEMA" == "component-descriptions" ]; then
echo "Using AICA component description schema"
SCHEMA_ENTRYPOINT="component.schema.json"
elif [ "$SCHEMA" == "controller-descriptions" ]; then
echo "Using AICA controller description schema"
SCHEMA_ENTRYPOINT="controller.schema.json"
elif [ "$SCHEMA" == "interfaces" ]; then
echo "Using AICA interfaces schema"
SCHEMA_ENTRYPOINT="interfaces.schema.json"
else
echo "Invalid schema option: $SCHEMA"
exit 0
fi
FIXTURE_FILE="$2"
FULL_PATH="$(
cd "$(dirname "$2")" || exit 1
pwd
)"
FILENAME=$(basename "${FIXTURE_FILE}")
IMAGE_NAME="aica-technology/api/${SCHEMA}-schema:validate"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
docker build -f Dockerfile --target validate --tag "${IMAGE_NAME}" "${SCRIPT_DIR}/${SCHEMA}" || exit 1
echo "${FULL_PATH}"
# mount a volume to share the fixture file and pass the relevant paths as command arguments to the entrypoint
RESULT=$(
docker run --rm \
--volume "${FULL_PATH}":/home/validate \
"${IMAGE_NAME}" \
"/schema/${SCHEMA_ENTRYPOINT}" "/home/validate/${FILENAME}"
)
if [ "$RESULT" == "ok -- validation done" ]; then
echo "Success: ${FILENAME} is a valid according to the ${SCHEMA} schema"
else
echo "Failure: ${FILENAME} is not valid according to the ${SCHEMA} schema!"
echo "${RESULT}"
fi