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 | |
| parent | 175777596ec3521731665dd750fd7087793b10fc (diff) | |
| download | godot-4f929a0fdfae24b1ca5acf0b732219119090ee43.tar.gz godot-4f929a0fdfae24b1ca5acf0b732219119090ee43.tar.zst godot-4f929a0fdfae24b1ca5acf0b732219119090ee43.zip | |
Diffstat (limited to 'main')
| -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; } |
