Add cli paramerter --check-only for script parsing

This commit is contained in:
Timur Celik 2018-05-31 00:23:23 +02:00
parent 10cab25f72
commit 3390972373

View file

@ -263,6 +263,7 @@ void Main::print_help(const char *p_binary) {
OS::get_singleton()->print("Standalone tools:\n"); OS::get_singleton()->print("Standalone tools:\n");
OS::get_singleton()->print(" -s, --script <script> Run a script.\n"); OS::get_singleton()->print(" -s, --script <script> Run a 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(" --export <target> Export the project using the given export target. Export only main pack if path ends with .pck or .zip'.\n"); OS::get_singleton()->print(" --export <target> Export the project using the given export target. Export only main pack if path ends with .pck or .zip'.\n");
OS::get_singleton()->print(" --export-debug <target> Like --export, but use debug template.\n"); OS::get_singleton()->print(" --export-debug <target> Like --export, but use debug template.\n");
@ -1239,6 +1240,7 @@ bool Main::start() {
String test; String test;
String _export_preset; String _export_preset;
bool export_debug = false; bool export_debug = false;
bool check_only = false;
main_timer_sync.init(OS::get_singleton()->get_ticks_usec()); main_timer_sync.init(OS::get_singleton()->get_ticks_usec());
@ -1261,6 +1263,8 @@ bool Main::start() {
bool parsed_pair = true; bool parsed_pair = true;
if (args[i] == "-s" || args[i] == "--script") { if (args[i] == "-s" || args[i] == "--script") {
script = args[i + 1]; script = args[i + 1];
} else if (args[i] == "--check-only") {
check_only = true;
} else if (args[i] == "--test") { } else if (args[i] == "--test") {
test = args[i + 1]; test = args[i + 1];
#ifdef TOOLS_ENABLED #ifdef TOOLS_ENABLED
@ -1383,6 +1387,10 @@ bool Main::start() {
ERR_EXPLAIN("Can't load script: " + script); ERR_EXPLAIN("Can't load script: " + script);
ERR_FAIL_COND_V(script_res.is_null(), false); ERR_FAIL_COND_V(script_res.is_null(), false);
if (check_only) {
return false;
}
if (script_res->can_instance() /*&& script_res->inherits_from("SceneTreeScripted")*/) { if (script_res->can_instance() /*&& script_res->inherits_from("SceneTreeScripted")*/) {
StringName instance_type = script_res->get_instance_base_type(); StringName instance_type = script_res->get_instance_base_type();