@ -924,6 +924,7 @@ void EditorNode::_fs_changed() {
// FIXME: Move this to a cleaner location, it's hacky to do this in _fs_changed.
String export_error ;
Error err = OK ;
if ( ! export_defer . preset . is_empty ( ) & & ! EditorFileSystem : : get_singleton ( ) - > is_scanning ( ) ) {
String preset_name = export_defer . preset ;
// Ensures export_project does not loop infinitely, because notifications may
@ -941,6 +942,7 @@ void EditorNode::_fs_changed() {
if ( export_preset . is_null ( ) ) {
Ref < DirAccess > da = DirAccess : : create ( DirAccess : : ACCESS_RESOURCES ) ;
if ( da - > file_exists ( " res://export_presets.cfg " ) ) {
err = FAILED ;
export_error = vformat (
" Invalid export preset name: %s. \n The following presets were detected in this project's `export_presets.cfg`: \n \n " ,
preset_name ) ;
@ -949,17 +951,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. \n Create an export preset from the \" Project > Export \" dialog and try again. " ;
}
} else {
Ref < EditorExportPlatform > platform = export_preset - > get_platform ( ) ;
const String export_path = export_defer . path . is_empty ( ) ? export_preset - > get_export_path ( ) : export_defer . path ;
if ( export_path . is_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 ( export_preset , export_defer . debug , export_path ) ;
@ -980,17 +984,18 @@ 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 error s." , preset_name ) ;
export_error = vformat ( " Project export for preset \" %s \" completed with warning s." , preset_name ) ;
}
}
}
if ( ! export_error . is_empty ( ) ) {
if ( err ! = OK ) {
ERR_PRINT ( export_error ) ;
_exit_editor ( EXIT_FAILURE ) ;
} else {
_exit_editor( EXIT_SUCCESS ) ;
} else if ( ! export_error . is_empty ( ) ) {
WARN_PRINT( export_error ) ;
}
_exit_editor ( EXIT_SUCCESS ) ;
}
}