Preserve the output from the gradle build command

Updates `EditorNode#execute_and_show_output(...)` to return the output of the executed command.

(cherry picked from commit 136b7f9c52)
This commit is contained in:
Fredia Huya-Kouadio 2023-11-11 17:20:04 -08:00 committed by Yuri Sizov
parent a3432848b2
commit f6a9129219
3 changed files with 15 additions and 6 deletions

View File

@ -6690,7 +6690,7 @@ static void _execute_thread(void *p_ud) {
eta->done.set(); eta->done.set();
} }
int EditorNode::execute_and_show_output(const String &p_title, const String &p_path, const List<String> &p_arguments, bool p_close_on_ok, bool p_close_on_errors) { int EditorNode::execute_and_show_output(const String &p_title, const String &p_path, const List<String> &p_arguments, bool p_close_on_ok, bool p_close_on_errors, String *r_output) {
if (execute_output_dialog) { if (execute_output_dialog) {
execute_output_dialog->set_title(p_title); execute_output_dialog->set_title(p_title);
execute_output_dialog->get_ok_button()->set_disabled(true); execute_output_dialog->get_ok_button()->set_disabled(true);
@ -6736,6 +6736,9 @@ int EditorNode::execute_and_show_output(const String &p_title, const String &p_p
execute_output_dialog->get_ok_button()->set_disabled(false); execute_output_dialog->get_ok_button()->set_disabled(false);
} }
if (r_output) {
*r_output = eta.output;
}
return eta.exitcode; return eta.exitcode;
} }

View File

@ -932,7 +932,7 @@ public:
bool has_scenes_in_session(); bool has_scenes_in_session();
int execute_and_show_output(const String &p_title, const String &p_path, const List<String> &p_arguments, bool p_close_on_ok = true, bool p_close_on_errors = false); int execute_and_show_output(const String &p_title, const String &p_path, const List<String> &p_arguments, bool p_close_on_ok = true, bool p_close_on_errors = false, String *r_output = nullptr);
EditorNode(); EditorNode();
~EditorNode(); ~EditorNode();

View File

@ -2939,10 +2939,13 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
} }
} }
int result = EditorNode::get_singleton()->execute_and_show_output(TTR("Building Android Project (gradle)"), build_command, cmdline); String build_project_output;
int result = EditorNode::get_singleton()->execute_and_show_output(TTR("Building Android Project (gradle)"), build_command, cmdline, true, false, &build_project_output);
if (result != 0) { if (result != 0) {
add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), TTR("Building of Android project failed, check output for the error. Alternatively visit docs.godotengine.org for Android build documentation.")); add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), TTR("Building of Android project failed, check output for the error:") + "\n\n" + build_project_output);
return ERR_CANT_CREATE; return ERR_CANT_CREATE;
} else {
print_verbose(build_project_output);
} }
List<String> copy_args; List<String> copy_args;
@ -2969,10 +2972,13 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
copy_args.push_back("-Pexport_filename=" + export_filename); copy_args.push_back("-Pexport_filename=" + export_filename);
print_verbose("Copying Android binary using gradle command: " + String("\n") + build_command + " " + join_list(copy_args, String(" "))); print_verbose("Copying Android binary using gradle command: " + String("\n") + build_command + " " + join_list(copy_args, String(" ")));
int copy_result = EditorNode::get_singleton()->execute_and_show_output(TTR("Moving output"), build_command, copy_args); String copy_binary_output;
int copy_result = EditorNode::get_singleton()->execute_and_show_output(TTR("Moving output"), build_command, copy_args, true, false, &copy_binary_output);
if (copy_result != 0) { if (copy_result != 0) {
add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), TTR("Unable to copy and rename export file, check gradle project directory for outputs.")); add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), TTR("Unable to copy and rename export file:") + "\n\n" + copy_binary_output);
return ERR_CANT_CREATE; return ERR_CANT_CREATE;
} else {
print_verbose(copy_binary_output);
} }
print_verbose("Successfully completed Android gradle build."); print_verbose("Successfully completed Android gradle build.");