Skip to content

Commit 4d2c376

Browse files
committed
improve diagram generation
Add class-relationships that cannot be modelled with LinkML and add possibility to generate multiple class-focused diagrams. Signed-off-by: Silvano Cirujano Cuesta <silvano.cirujano-cuesta@siemens.com>
1 parent 5a3e2b5 commit 4d2c376

File tree

1 file changed

+81
-1
lines changed

1 file changed

+81
-1
lines changed

data-model/tools/generate-class-diagram.bash

Lines changed: 81 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
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+
311
set -eu
412

513
THIS_SCRIPT="$(readlink -f "${0}")"
@@ -11,4 +19,76 @@ TGT_DIR="${ROOT_DIR}/generated/diagrams"
1119

1220
mkdir -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

Comments
 (0)