11#! /usr/bin/env bash
22
3+ TMP_PLANTUML_FILE=$( mktemp)
4+
5+ cleanup () {
6+ rm " ${TMP_PLANTUML_FILE} "
7+ }
8+
9+ trap cleanup EXIT
10+
311set -eu
412
513THIS_SCRIPT=" $( readlink -f " ${0} " ) "
@@ -11,4 +19,76 @@ TGT_DIR="${ROOT_DIR}/generated/diagrams"
1119
1220mkdir -p " ${TGT_DIR} "
1321
14- linkml generate plantuml --directory " ${TGT_DIR} " --format svg " ${ROOT_DIR} /data-model/margo-data-model.linkml.yaml"
22+ # Holistic class diagram
23+ linkml generate plantuml " ${ROOT_DIR} /data-model/margo-data-model.linkml.yaml" \
24+ | sed " s/@enduml/DeploymentAnnotations ..> ApplicationDescription\n@enduml/" \
25+ | sed " s/@enduml/DeploymentStatusManifest ..> ApplicationDeployment\n@enduml/" \
26+ | sed " s/@enduml/DesiredStateManifest ..> ApplicationDeployment\n@enduml/" > " ${TMP_PLANTUML_FILE} "
27+
28+ curl -H " Content-Type: test/plain" --data-binary @" ${TMP_PLANTUML_FILE} " https://kroki.io/plantuml/svg -o " ${TGT_DIR} /DataModel-ClassDiagram.svg"
29+
30+ if [ " $# " -lt 1 ] ; then
31+ exit
32+ fi
33+
34+ # Class diagram focused on ApplicationDescription
35+ linkml generate plantuml \
36+ --classes ApplicationDescription \
37+ --classes ApplicationMetadata \
38+ --classes Parameter \
39+ --classes Configuration \
40+ --classes DeploymentProfileDescription \
41+ " ${ROOT_DIR} /data-model/application-description.linkml.yaml" \
42+ | sed " /Component.*{$/,/}/d" \
43+ > " ${TMP_PLANTUML_FILE} "
44+
45+ curl -H " Content-Type: test/plain" --data-binary @" ${TMP_PLANTUML_FILE} " https://kroki.io/plantuml/svg -o " ${TGT_DIR} /ApplicationDescription-ClassDiagram.svg"
46+
47+ # Class diagram focused on DeploymentStatusManifest
48+ linkml generate plantuml \
49+ --classes DeploymentStatusManifest \
50+ --classes ApplicationDeployment \
51+ --classes DeploymentProfile \
52+ " ${ROOT_DIR} /data-model/margo-data-model.linkml.yaml" \
53+ | sed " s/@enduml/DeploymentStatusManifest ..> ApplicationDeployment\n@enduml/" \
54+ | sed " s/@enduml/ComponentStatus ..> Component\n@enduml/" \
55+ > " ${TMP_PLANTUML_FILE} "
56+
57+ curl -H " Content-Type: test/plain" --data-binary @" ${TMP_PLANTUML_FILE} " https://kroki.io/plantuml/svg -o " ${TGT_DIR} /DeploymentStatusManifest-ClassDiagram.svg"
58+
59+ # Class diagram focused on DesiredStateManifest
60+ linkml generate plantuml \
61+ --classes DesiredStateManifest \
62+ " ${ROOT_DIR} /data-model/margo-data-model.linkml.yaml" \
63+ | sed " s/@enduml/DesiredStateManifest ..> ApplicationDeployment\n@enduml/" \
64+ > " ${TMP_PLANTUML_FILE} "
65+
66+ curl -H " Content-Type: test/plain" --data-binary @" ${TMP_PLANTUML_FILE} " https://kroki.io/plantuml/svg -o " ${TGT_DIR} /DesiredStateManifest-ClassDiagram.svg"
67+
68+ # Class diagram focused on DeviceCapabilities
69+ linkml generate plantuml \
70+ --classes DeviceCapabilitiesManifest \
71+ --classes Properties \
72+ --classes Resources \
73+ " ${ROOT_DIR} /data-model/margo-data-model.linkml.yaml" \
74+ > " ${TMP_PLANTUML_FILE} "
75+
76+ curl -H " Content-Type: test/plain" --data-binary @" ${TMP_PLANTUML_FILE} " https://kroki.io/plantuml/svg -o " ${TGT_DIR} /DeviceCapabilities-ClassDiagram.svg"
77+
78+ # Class diagram focused on ApplicationDeployment
79+ linkml generate plantuml \
80+ --classes ApplicationDeployment \
81+ --classes DeploymentMetadata \
82+ --classes DeploymentAnnotations \
83+ --classes Spec \
84+ --classes Parameter \
85+ --classes DeploymentProfile \
86+ --classes ComposeDeploymentProfile \
87+ --classes HelmDeploymentProfile \
88+ --classes Component \
89+ " ${ROOT_DIR} /data-model/application-deployment.linkml.yaml" \
90+ | sed " s/@enduml/DeploymentAnnotations ..> ApplicationDescription\n@enduml/" \
91+ > " ${TMP_PLANTUML_FILE} "
92+
93+ curl -H " Content-Type: test/plain" --data-binary @" ${TMP_PLANTUML_FILE} " https://kroki.io/plantuml/svg -o " ${TGT_DIR} /ApplicationDeployment-ClassDiagram.svg"
94+
0 commit comments