From b8c689bcf572eff054bc7fc6df136969c2da3f94 Mon Sep 17 00:00:00 2001 From: Rob Kelly Date: Thu, 17 Apr 2025 14:54:59 -0600 Subject: [PATCH] Workaround script for generated docs --- utilities/regenerate_docs/regenerate_docs.gd | 51 +++++++++++++++++++ .../regenerate_docs/regenerate_docs.gd.uid | 1 + 2 files changed, 52 insertions(+) create mode 100644 utilities/regenerate_docs/regenerate_docs.gd create mode 100644 utilities/regenerate_docs/regenerate_docs.gd.uid diff --git a/utilities/regenerate_docs/regenerate_docs.gd b/utilities/regenerate_docs/regenerate_docs.gd new file mode 100644 index 0000000..13eefda --- /dev/null +++ b/utilities/regenerate_docs/regenerate_docs.gd @@ -0,0 +1,51 @@ +@tool +extends EditorScript +## Regenerates all documentation for custom scripts +## Workaround for https://github.com/godotengine/godot/issues/72406 + +const ROOT_DIR := "res://" +const SCRIPT_EXTENSION := ".gd" +const PATH_LENGTH_LIMIT := 128 + +const PATH_BLACKLIST := [ + "res://utilities/regenerate_docs", # This script MUST blacklist itself! + "res://venv", + "res://data_build", + "res://data_sandbox", +] + + +func regen_docs(script_path: String) -> void: + print("Regenerating docs for ", script_path) + ResourceSaver.save(load(script_path)) + + +func walk_directory(path: String) -> void: + if len(path) > PATH_LENGTH_LIMIT: + push_warning("Might be in a loop, skipping path ", path) + return + if path in PATH_BLACKLIST: + push_warning("Skipping blacklisted path ", path) + return + + var dir := DirAccess.open(path) + if dir: + dir.include_hidden = false + dir.include_navigational = false + dir.list_dir_begin() + var file := dir.get_next() + while file: + var file_path := path.path_join(file) + if dir.current_is_dir(): + walk_directory(file_path) + elif file.ends_with(SCRIPT_EXTENSION): + regen_docs(file_path) + file = dir.get_next() + + +func _run() -> void: + print("Regenerating custom script docs...") + + walk_directory(ROOT_DIR) + + print("Done!") diff --git a/utilities/regenerate_docs/regenerate_docs.gd.uid b/utilities/regenerate_docs/regenerate_docs.gd.uid new file mode 100644 index 0000000..e06d2a8 --- /dev/null +++ b/utilities/regenerate_docs/regenerate_docs.gd.uid @@ -0,0 +1 @@ +uid://baxmo0bx0yhr4