summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabio Alessandrelli <fabio.alessandrelli@gmail.com>2020-11-17 18:02:41 +0100
committerFabio Alessandrelli <fabio.alessandrelli@gmail.com>2020-11-17 18:26:03 +0100
commit032a1c5dc34b8ebb785b2d34148138d4d16b9059 (patch)
treee825b0e53a7fdee9b3a55736b608d48686d9174d
parentc56a071d0c6e282dbb82aa7e69691e33f6c2fd7e (diff)
Fix CLI export when export_path is in preset.
Export presets contains the export_path option, to specify the default export location, but the CLI export option disregarded that, and always required and export path to be specified. After this commit, if the export path is not specified in the command, the one in the preset will be used, erroring only if it's not present or invalid.
-rw-r--r--editor/editor_node.cpp17
-rw-r--r--main/main.cpp8
2 files changed, 10 insertions, 15 deletions
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp
index 98f461e442..976afd8e8e 100644
--- a/editor/editor_node.cpp
+++ b/editor/editor_node.cpp
@@ -760,15 +760,18 @@ void EditorNode::_fs_changed() {
preset_name);
} else {
Ref<EditorExportPlatform> platform = preset->get_platform();
- if (platform.is_null()) {
+ const String export_path = export_defer.path.empty() ? preset->get_export_path() : export_defer.path;
+ if (export_path.empty()) {
+ export_error = vformat("Export preset '%s' doesn't have a default export path, and none was specified.", preset_name);
+ } else if (platform.is_null()) {
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_defer.path.ends_with(".zip")) {
- err = platform->export_zip(preset, export_defer.debug, export_defer.path);
- } else if (export_defer.path.ends_with(".pck")) {
- err = platform->export_pack(preset, export_defer.debug, export_defer.path);
+ if (export_path.ends_with(".zip")) {
+ err = platform->export_zip(preset, export_defer.debug, export_path);
+ } else if (export_path.ends_with(".pck")) {
+ err = platform->export_pack(preset, export_defer.debug, export_path);
}
} else { // Normal project export.
String config_error;
@@ -777,7 +780,7 @@ void EditorNode::_fs_changed() {
ERR_PRINT(vformat("Cannot export project with preset '%s' due to configuration errors:\n%s", preset_name, config_error));
err = missing_templates ? ERR_FILE_NOT_FOUND : ERR_UNCONFIGURED;
} else {
- err = platform->export_project(preset, export_defer.debug, export_defer.path);
+ err = platform->export_project(preset, export_defer.debug, export_path);
}
}
switch (err) {
@@ -787,7 +790,7 @@ void EditorNode::_fs_changed() {
export_error = vformat("Project export failed for preset '%s', the export template appears to be missing.", preset_name);
break;
case ERR_FILE_BAD_PATH:
- export_error = vformat("Project export failed for preset '%s', the target path '%s' appears to be invalid.", preset_name, export_defer.path);
+ export_error = vformat("Project export failed for preset '%s', the target path '%s' appears to be invalid.", preset_name, export_path);
break;
default:
export_error = vformat("Project export failed with error code %d for preset '%s'.", (int)err, preset_name);
diff --git a/main/main.cpp b/main/main.cpp
index 29497cd1cf..51d2cbfe71 100644
--- a/main/main.cpp
+++ b/main/main.cpp
@@ -1890,14 +1890,6 @@ bool Main::start() {
return false;
}
- if (_export_preset != "") {
- if (positional_arg == "") {
- String err = "Command line includes export parameter option, but no destination path was given.\n";
- err += "Please specify the binary's file path to export to. Aborting export.";
- ERR_PRINT(err);
- return false;
- }
- }
#endif
if (script == "" && game_path == "" && String(GLOBAL_DEF("application/run/main_scene", "")) != "") {