diff options
| author | Juan Linietsky | 2017-09-12 17:42:36 -0300 |
|---|---|---|
| committer | Juan Linietsky | 2017-09-12 17:45:41 -0300 |
| commit | 4f929a0fdfae24b1ca5acf0b732219119090ee43 (patch) | |
| tree | 730471182cae00f2e47c7430db441d057383d29b /main/main.cpp | |
| parent | 175777596ec3521731665dd750fd7087793b10fc (diff) | |
| download | godot-4f929a0fdfae24b1ca5acf0b732219119090ee43.tar.gz godot-4f929a0fdfae24b1ca5acf0b732219119090ee43.tar.zst godot-4f929a0fdfae24b1ca5acf0b732219119090ee43.zip | |
Changed the doc class generation to individual files per class. It is also possible to save module files in module directories and the build system will
recognize them.
Diffstat (limited to 'main/main.cpp')
| -rw-r--r-- | main/main.cpp | 47 |
1 files changed, 35 insertions, 12 deletions
diff --git a/main/main.cpp b/main/main.cpp index 8eb80fe6b..58b5a6a68 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -60,6 +60,7 @@ #include "editor/doc/doc_data.h" #include "editor/editor_node.h" #include "editor/project_manager.h" +#include "editor/doc/doc_data_class_path.gen.h" #endif #include "io/file_access_network.h" @@ -74,6 +75,7 @@ #include "translation.h" #include "version.h" + static ProjectSettings *globals = NULL; static Engine *engine = NULL; static InputMap *input_map = NULL; @@ -1143,26 +1145,47 @@ bool Main::start() { #ifdef TOOLS_ENABLED if (doc_tool != "") { + { + DirAccessRef da = DirAccess::open(doc_tool); + if (!da) { + ERR_EXPLAIN("Argument supplied to --doctool must be a base godot build directory"); + ERR_FAIL_V(false); + } + } DocData doc; doc.generate(doc_base); + DocData docsrc; - if (docsrc.load(doc_tool) == OK) { - print_line("Doc exists. Merging.."); - doc.merge_from(docsrc); - } else { - print_line("No Doc exists. Generating empty."); - } + Map<String,String> doc_data_classes; + Set<String> checked_paths; + print_line("Loading docs.."); - for (List<String>::Element *E = removal_docs.front(); E; E = E->next()) { - DocData rmdoc; - if (rmdoc.load(E->get()) == OK) { - print_line(String("Removing classes in ") + E->get()); - doc.remove_from(rmdoc); + for(int i=0;i<_doc_data_class_path_count;i++) { + String path = doc_tool.plus_file(_doc_data_class_paths[i].path); + String name = _doc_data_class_paths[i].name; + doc_data_classes[name]=path; + if (!checked_paths.has(path)) { + checked_paths.insert(path); + docsrc.load_classes(path); + print_line("Loading docs from: "+path); } } - doc.save(doc_tool); + String index_path = doc_tool.plus_file("doc/classes"); + docsrc.load_classes(index_path); + checked_paths.insert(index_path); + print_line("Loading docs from: "+index_path); + + print_line("Merging docs.."); + doc.merge_from(docsrc); + for (Set<String>::Element *E=checked_paths.front();E;E=E->next()) { + print_line("Erasing old docs at: "+E->get()); + DocData::erase_classes(E->get()); + } + + print_line("Generating new docs.."); + doc.save_classes(index_path,doc_data_classes); return false; } |
