From d6698c1f81837f46a069f45d0cde305b39990179 Mon Sep 17 00:00:00 2001 From: bruvzg <7645683+bruvzg@users.noreply.github.com> Date: Sun, 10 Jul 2022 23:39:16 +0300 Subject: [PATCH] [Command line export] return 0 exit code when export is finished with warnings. (cherry picked from commit d02bf7584aa9a679f9bf7d63bd5366ed354022ba) --- editor/editor_node.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 8685f675c69..ae715356ae4 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -749,6 +749,7 @@ void EditorNode::_fs_changed() { // FIXME: Move this to a cleaner location, it's hacky to do this is _fs_changed. String export_error; + Error err = OK; if (export_defer.preset != "" && !EditorFileSystem::get_singleton()->is_scanning()) { String preset_name = export_defer.preset; // Ensures export_project does not loop infinitely, because notifications may @@ -766,6 +767,7 @@ void EditorNode::_fs_changed() { if (preset.is_null()) { DirAccessRef da = DirAccess::create(DirAccess::ACCESS_RESOURCES); if (da->file_exists("res://export_presets.cfg")) { + err = FAILED; export_error = vformat( "Invalid export preset name: %s.\nThe following presets were detected in this project's `export_presets.cfg`:\n\n", preset_name); @@ -774,17 +776,19 @@ void EditorNode::_fs_changed() { export_error += vformat(" \"%s\"\n", EditorExport::get_singleton()->get_export_preset(i)->get_name()); } } else { + err = FAILED; export_error = "This project doesn't have an `export_presets.cfg` file at its root.\nCreate an export preset from the \"Project > Export\" dialog and try again."; } } else { Ref platform = preset->get_platform(); const String export_path = export_defer.path.empty() ? preset->get_export_path() : export_defer.path; if (export_path.empty()) { + err = FAILED; export_error = vformat("Export preset \"%s\" doesn't have a default export path, and none was specified.", preset_name); } else if (platform.is_null()) { + err = FAILED; export_error = vformat("Export preset \"%s\" doesn't have a matching platform.", preset_name); } else { - Error err = OK; if (export_defer.pack_only) { // Only export .pck or .zip data pack. if (export_path.ends_with(".zip")) { err = platform->export_zip(preset, export_defer.debug, export_path); @@ -805,14 +809,16 @@ void EditorNode::_fs_changed() { if (err != OK) { export_error = vformat("Project export for preset \"%s\" failed.", preset_name); } else if (platform->get_worst_message_type() >= EditorExportPlatform::EXPORT_MESSAGE_WARNING) { - export_error = vformat("Project export for preset \"%s\" completed with errors.", preset_name); + export_error = vformat("Project export for preset \"%s\" completed with warnings.", preset_name); } } } - if (!export_error.empty()) { + if (err != OK) { ERR_PRINT(export_error); OS::get_singleton()->set_exit_code(EXIT_FAILURE); + } else if (!export_error.empty()) { + WARN_PRINT(export_error); } _exit_editor(); }