Add `--import` command-line flag

(cherry picked from commit 9d01793dff)
This commit is contained in:
Mikael Hermansson 2024-04-09 11:20:43 +02:00 committed by Rémi Verschelde
parent 0f6403f719
commit 219517f6b8
No known key found for this signature in database
GPG Key ID: C3336907360768E1
2 changed files with 16 additions and 1 deletions

View File

@ -304,6 +304,7 @@ public:
EditorFileSystemDirectory *get_filesystem(); EditorFileSystemDirectory *get_filesystem();
bool is_scanning() const; bool is_scanning() const;
bool is_importing() const { return importing; } bool is_importing() const { return importing; }
bool doing_first_scan() const { return first_scan; }
float get_scanning_progress() const; float get_scanning_progress() const;
void scan(); void scan();
void scan_changes(); void scan_changes();

View File

@ -89,6 +89,7 @@
#include "editor/debugger/editor_debugger_node.h" #include "editor/debugger/editor_debugger_node.h"
#include "editor/doc_data_class_path.gen.h" #include "editor/doc_data_class_path.gen.h"
#include "editor/doc_tools.h" #include "editor/doc_tools.h"
#include "editor/editor_file_system.h"
#include "editor/editor_help.h" #include "editor/editor_help.h"
#include "editor/editor_node.h" #include "editor/editor_node.h"
#include "editor/editor_paths.h" #include "editor/editor_paths.h"
@ -179,6 +180,7 @@ static OS::ProcessID editor_pid = 0;
static bool found_project = false; static bool found_project = false;
static bool auto_build_solutions = false; static bool auto_build_solutions = false;
static String debug_server_uri; static String debug_server_uri;
static bool wait_for_import = false;
#ifndef DISABLE_DEPRECATED #ifndef DISABLE_DEPRECATED
static int converter_max_kb_file = 4 * 1024; // 4MB static int converter_max_kb_file = 4 * 1024; // 4MB
static int converter_max_line_length = 100000; static int converter_max_line_length = 100000;
@ -505,6 +507,7 @@ void Main::print_help(const char *p_binary) {
OS::get_singleton()->print(" --main-loop <main_loop_name> Run a MainLoop specified by its global class name.\n"); OS::get_singleton()->print(" --main-loop <main_loop_name> Run a MainLoop specified by its global class name.\n");
OS::get_singleton()->print(" --check-only Only parse for errors and quit (use with --script).\n"); OS::get_singleton()->print(" --check-only Only parse for errors and quit (use with --script).\n");
#ifdef TOOLS_ENABLED #ifdef TOOLS_ENABLED
OS::get_singleton()->print(" --import Starts the editor, waits for any resources to be imported, and then quits.\n");
OS::get_singleton()->print(" --export-release <preset> <path> Export the project in release mode using the given preset and output path. The preset name should match one defined in export_presets.cfg.\n"); OS::get_singleton()->print(" --export-release <preset> <path> Export the project in release mode using the given preset and output path. The preset name should match one defined in export_presets.cfg.\n");
OS::get_singleton()->print(" <path> should be absolute or relative to the project directory, and include the filename for the binary (e.g. 'builds/game.exe').\n"); OS::get_singleton()->print(" <path> should be absolute or relative to the project directory, and include the filename for the binary (e.g. 'builds/game.exe').\n");
OS::get_singleton()->print(" The target directory must exist.\n"); OS::get_singleton()->print(" The target directory must exist.\n");
@ -1288,12 +1291,17 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
OS::get_singleton()->print("Missing file to load argument after --validate-extension-api, aborting."); OS::get_singleton()->print("Missing file to load argument after --validate-extension-api, aborting.");
goto error; goto error;
} }
} else if (I->get() == "--import") {
editor = true;
cmdline_tool = true;
wait_for_import = true;
quit_after = 1;
} else if (I->get() == "--export-release" || I->get() == "--export-debug" || } else if (I->get() == "--export-release" || I->get() == "--export-debug" ||
I->get() == "--export-pack") { // Export project I->get() == "--export-pack") { // Export project
// Actually handling is done in start(). // Actually handling is done in start().
editor = true; editor = true;
cmdline_tool = true; cmdline_tool = true;
wait_for_import = true;
main_args.push_back(I->get()); main_args.push_back(I->get());
#ifndef DISABLE_DEPRECATED #ifndef DISABLE_DEPRECATED
} else if (I->get() == "--export") { // For users used to 3.x syntax. } else if (I->get() == "--export") { // For users used to 3.x syntax.
@ -3746,6 +3754,12 @@ bool Main::iteration() {
exit = true; exit = true;
} }
#ifdef TOOLS_ENABLED
if (wait_for_import && EditorFileSystem::get_singleton()->doing_first_scan()) {
exit = false;
}
#endif
if (fixed_fps != -1) { if (fixed_fps != -1) {
return exit; return exit;
} }