@@ -44,7 +44,6 @@ load("@rules_pkg//pkg:mappings.bzl", "pkg_files")
4444load ("@rules_pkg//pkg:tar.bzl" , "pkg_tar" )
4545load ("@rules_python//sphinxdocs:sphinx.bzl" , "sphinx_build_binary" , "sphinx_docs" )
4646load ("@rules_python//sphinxdocs:sphinx_docs_library.bzl" , "sphinx_docs_library" )
47- load ("@score_docs_as_code//src/extensions/score_source_code_linker:collect_source_files.bzl" , "parse_source_files_for_needs_links" )
4847load ("@score_python_basics//:defs.bzl" , "score_virtualenv" )
4948
5049sphinx_requirements = all_requirements + [
@@ -58,21 +57,14 @@ sphinx_requirements = all_requirements + [
5857 "@score_docs_as_code//src/extensions/score_source_code_linker:score_source_code_linker" ,
5958]
6059
61- def docs (source_files_to_scan_for_needs_links = None , source_dir = "docs" , conf_dir = "docs" , build_dir_for_incremental = "_build" , docs_targets = []):
60+ def docs (source_files_to_scan_for_needs_links = None , source_dir = "docs" , conf_dir = "docs" , build_dir_for_incremental = "_build" , docs_targets = [], deps = [] ):
6261 """
6362 Creates all targets related to documentation.
6463 By using this function, you'll get any and all updates for documentation targets in one place.
6564 Current restrictions:
6665 * only callable from 'docs/BUILD'
6766 """
6867
69- # Parse source files for needs links
70- # This needs to be created to generate a target, otherwise it won't execute as dependency for other macros
71- parse_source_files_for_needs_links (
72- name = "score_source_code_parser" ,
73- srcs_and_deps = source_files_to_scan_for_needs_links if source_files_to_scan_for_needs_links else [],
74- )
75-
7668 # We are iterating over all provided 'targets' in order to allow for automatic generation of them without
7769 # needing to modify the underlying 'docs.bzl' file.
7870 for target in docs_targets :
@@ -83,8 +75,8 @@ def docs(source_files_to_scan_for_needs_links = None, source_dir = "docs", conf_
8375 sphinx_build_binary (
8476 name = "sphinx_build" + suffix ,
8577 visibility = ["//visibility:public" ],
86- data = ["@score_docs_as_code//src:docs_assets" , "@score_docs_as_code//src:score_extension_files " ] + external_needs_deps ,
87- deps = sphinx_requirements ,
78+ data = ["@score_docs_as_code//src:docs_assets" , "@score_docs_as_code//src:docs_as_code_py_modules " ] + external_needs_deps ,
79+ deps = sphinx_requirements + deps ,
8880 )
8981 _incremental (
9082 incremental_name = "incremental" + suffix ,
@@ -94,6 +86,7 @@ def docs(source_files_to_scan_for_needs_links = None, source_dir = "docs", conf_
9486 build_dir = build_dir_for_incremental ,
9587 external_needs_deps = external_needs_deps ,
9688 external_needs_def = external_needs_def ,
89+ extra_dependencies = deps ,
9790 )
9891 _docs (
9992 name = "docs" + suffix ,
@@ -113,7 +106,7 @@ def docs(source_files_to_scan_for_needs_links = None, source_dir = "docs", conf_
113106 # Virtual python environment for working on the documentation (esbonio).
114107 # incl. python support when working on conf.py and sphinx extensions.
115108 # creates :ide_support target for virtualenv
116- _ide_support ()
109+ _ide_support (deps )
117110
118111 # creates 'needs.json' build target
119112
@@ -136,7 +129,7 @@ def _incremental(incremental_name = "incremental", live_name = "live_preview", s
136129 srcs = ["@score_docs_as_code//src:incremental.py" ],
137130 deps = dependencies ,
138131 # TODO: Figure out if we need all dependencies as data here or not.
139- data = [":score_source_code_parser" , " @score_docs_as_code//src:plantuml" , "@score_docs_as_code//src:docs_assets" ] + dependencies + external_needs_deps ,
132+ data = ["@score_docs_as_code//src:plantuml" , "@score_docs_as_code//src:docs_assets" ] + dependencies + external_needs_deps ,
140133 env = {
141134 "SOURCE_DIRECTORY" : source_dir ,
142135 "CONF_DIRECTORY" : conf_dir ,
@@ -160,11 +153,11 @@ def _incremental(incremental_name = "incremental", live_name = "live_preview", s
160153 },
161154 )
162155
163- def _ide_support ():
156+ def _ide_support (extra_dependencies ):
164157 score_virtualenv (
165158 name = "ide_support" ,
166159 venv_name = ".venv_docs" ,
167- reqs = sphinx_requirements ,
160+ reqs = sphinx_requirements + extra_dependencies ,
168161 )
169162
170163def _docs (name = "docs" , suffix = "" , format = "html" , external_needs_deps = list (), external_needs_def = list ()):
@@ -190,7 +183,7 @@ def _docs(name = "docs", suffix = "", format = "html", external_needs_deps = lis
190183 "**/*.json" ,
191184 "**/*.csv" ,
192185 "**/*.inc" ,
193- ], exclude = ["**/tests/*" ]),
186+ ], exclude = ["**/tests/*" ], allow_empty = True ),
194187 config = ":conf.py" ,
195188 extra_opts = [
196189 "-W" ,
@@ -204,7 +197,6 @@ def _docs(name = "docs", suffix = "", format = "html", external_needs_deps = lis
204197 "manual" ,
205198 ],
206199 tools = [
207- ":score_source_code_parser" ,
208200 "@score_docs_as_code//src:plantuml" ,
209201 "@score_docs_as_code//src:docs_assets" ,
210202 ] + external_needs_deps ,
@@ -213,7 +205,7 @@ def _docs(name = "docs", suffix = "", format = "html", external_needs_deps = lis
213205
214206 native .filegroup (
215207 name = "assets" + target_suffix ,
216- srcs = native .glob (["_assets/**" ]),
208+ srcs = native .glob (["_assets/**" ], allow_empty = True ),
217209 visibility = ["//visibility:public" ],
218210 )
219211
0 commit comments