diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 9de5cdc6..c17df6b6 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -38,6 +38,6 @@ repos:
entry: cr_checker/tool/pre-commit_wrapper --extensions h hpp c cpp rs rst py sh bzl ini yml yaml BUILD bazel --fix
# this would be the better language implementation, but struggle with python tooling
# language: python
- language: unsupported_script
+ language: script
minimum_pre_commit_version: 3.2.0
types_or: [python, yaml, ini, rst, sh, shell, bash, bazel, c, c++, rust]
diff --git a/.pre-commit-hooks.yaml b/.pre-commit-hooks.yaml
index 80979be2..a11c5a37 100644
--- a/.pre-commit-hooks.yaml
+++ b/.pre-commit-hooks.yaml
@@ -15,6 +15,6 @@
entry: cr_checker/tool/pre-commit_wrapper --extensions h hpp c cpp rs rst py sh bzl ini yml yaml BUILD bazel --fix
# this would be the better language implementation, but struggle with python tooling
# language: python
- language: unsupported_script
+ language: script
minimum_pre_commit_version: 3.2.0
types_or: [python, yaml, ini, rst, sh, shell, bash, bazel, c, c++, rust]
diff --git a/MODULE.bazel b/MODULE.bazel
index daea5ba9..34121299 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -228,13 +228,13 @@ use_repo(pip, "manual_analysis_deps")
bazel_dep(name = "trlc", version = "0.0.0")
git_override(
module_name = "trlc",
- commit = "c7750ebd0520996e05b9a9bc91eb6a4f62030f22",
+ commit = "1872957ae981ae632a0ec6eafb5b8d3aa44bdb86",
remote = "https://github.com/bmw-software-engineering/trlc.git",
)
bazel_dep(name = "lobster", version = "0.0.0")
git_override(
module_name = "lobster",
- commit = "56881461f9d3fde2918d1731aa5937aaf64cd67c",
+ commit = "94ed5961ca28ee1b840cd8a938138c17ae4da671",
remote = "https://github.com/bmw-software-engineering/lobster.git",
)
diff --git a/plantuml/BUILD b/plantuml/BUILD
new file mode 100644
index 00000000..983c4059
--- /dev/null
+++ b/plantuml/BUILD
@@ -0,0 +1,19 @@
+# *******************************************************************************
+# Copyright (c) 2025 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Apache License Version 2.0 which is available at
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# SPDX-License-Identifier: Apache-2.0
+# *******************************************************************************
+filegroup(
+ name = "fta_metamodel",
+ srcs = [
+ "fta_metamodel.puml",
+ ],
+ visibility = ["//visibility:public"],
+)
diff --git a/plantuml/fta_metamodel.puml b/plantuml/fta_metamodel.puml
new file mode 100644
index 00000000..09aabc5a
--- /dev/null
+++ b/plantuml/fta_metamodel.puml
@@ -0,0 +1,63 @@
+' *******************************************************************************
+' Copyright (c) 2025 Contributors to the Eclipse Foundation
+'
+' See the NOTICE file(s) distributed with this work for additional
+' information regarding copyright ownership.
+'
+' This program and the accompanying materials are made available under the
+' terms of the Apache License Version 2.0 which is available at
+' https://www.apache.org/licenses/LICENSE-2.0
+'
+' SPDX-License-Identifier: Apache-2.0
+' *******************************************************************************
+
+@startuml
+
+' AND gate: flat bottom + elliptic arch on top
+sprite $and
+
+' OR gate: pointed top, bowed sides, concave bottom
+sprite $or
+
+' Transfer-In gate: upward triangle
+sprite $transferin
+
+'skinparam linetype polyline
+'skinparam linetype ortho
+
+!procedure $TopEvent($name, $alias)
+ rectangle "$name" as $alias
+!endprocedure
+
+!procedure $IntermediateEvent($name, $alias, $connection)
+ rectangle "$name" as $alias
+ $alias -u-> $connection
+!endprocedure
+
+!procedure $BasicEvent($name, $alias, $connection)
+ usecase "$name" as $alias
+ $alias -u-> $connection
+!endprocedure
+
+!procedure $AndGate($alias, $connection)
+ rectangle " " <<$and>> as $alias
+ $alias -u-> $connection
+!endprocedure
+
+!procedure $OrGate($alias, $connection)
+ rectangle " " <<$or>> as $alias
+ $alias -u-> $connection
+!endprocedure
+
+!procedure $TransferInGate($alias, $connection)
+ rectangle " " <<$transferin>> as $alias
+ $alias -u-> $connection
+!endprocedure
+
+@enduml
diff --git a/plantuml/parser/puml_resolver/src/class_diagram/test/class_resolver_test.rs b/plantuml/parser/puml_resolver/src/class_diagram/test/class_resolver_test.rs
index 6b3540c5..c23c93cf 100644
--- a/plantuml/parser/puml_resolver/src/class_diagram/test/class_resolver_test.rs
+++ b/plantuml/parser/puml_resolver/src/class_diagram/test/class_resolver_test.rs
@@ -27,13 +27,13 @@ use test_framework::{run_case, DefaultExpectationChecker, DiagramProcessor};
// ===== Class Resolver adapter DiagramProcessor =====
struct ClassResolverRunner;
impl DiagramProcessor for ClassResolverRunner {
- type Output = HashMap;
+ type Output = ClassDiagram;
type Error = ClassResolverError;
fn run(
&self,
files: &HashSet>,
- ) -> Result, HashMap>, ClassResolverError> {
+ ) -> Result, ClassDiagram>, ClassResolverError> {
let mut results = HashMap::new();
let mut parser = PumlClassParser;
let mut resolver = ClassResolver::new();
diff --git a/tools/sphinx/BUILD b/tools/sphinx/BUILD
new file mode 100644
index 00000000..d1a64d03
--- /dev/null
+++ b/tools/sphinx/BUILD
@@ -0,0 +1,44 @@
+# *******************************************************************************
+# Copyright (c) 2026 Contributors to the Eclipse Foundation
+#
+# See the NOTICE file(s) distributed with this work for additional
+# information regarding copyright ownership.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Apache License Version 2.0 which is available at
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# SPDX-License-Identifier: Apache-2.0
+# *******************************************************************************
+
+load("@pip_rules_score//:requirements.bzl", "requirement")
+load("@rules_java//java:defs.bzl", "java_binary")
+load("@rules_python//sphinxdocs:sphinx.bzl", "sphinx_build_binary")
+
+java_binary(
+ name = "plantuml",
+ main_class = "net.sourceforge.plantuml.Run",
+ visibility = ["//visibility:public"],
+ runtime_deps = [
+ "@blueprint_maven_dependencies//:net_sourceforge_plantuml_plantuml",
+ ],
+)
+
+sphinx_build_binary(
+ name = "sphinx-build",
+ visibility = ["//visibility:public"],
+ deps = [
+ "@lobster//sphinx_lobster:sphinx_lobster_builder",
+ "@score_tooling//plantuml/sphinx/clickable_plantuml",
+ "@trlc//tools/sphinx/extensions/trlc",
+ requirement("sphinx"),
+ requirement("sphinx_rtd_theme"),
+ requirement("myst_parser"),
+ requirement("readthedocs_sphinx_ext"),
+ requirement("rst2pdf"),
+ requirement("sphinxcontrib-umlet"),
+ requirement("svglib"),
+ requirement("sphinxcontrib-plantuml"),
+ "@rules_python//python/runfiles",
+ ],
+)