Browse Source

Preserve the output from the gradle build command

Updates `EditorNode#execute_and_show_output(...)` to return the output of the executed command.
Fredia Huya-Kouadio 1 year ago
parent
commit
136b7f9c52
3 changed files with 15 additions and 6 deletions
  1. 4 1
      editor/editor_node.cpp
  2. 1 1
      editor/editor_node.h
  3. 10 4
      platform/android/export/export_plugin.cpp

+ 4 - 1
editor/editor_node.cpp

@@ -6733,7 +6733,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);
@@ -6779,6 +6779,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;
 }
 }
 
 

+ 1 - 1
editor/editor_node.h

@@ -929,7 +929,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();

+ 10 - 4
platform/android/export/export_plugin.cpp

@@ -3041,10 +3041,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;
@@ -3071,10 +3074,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.");