| 2309 | } |
| 2310 | |
| 2311 | bool EditorExportPlatform::can_export(const Ref<EditorExportPreset> &p_preset, String &r_error, bool &r_missing_templates, bool p_debug) const { |
| 2312 | bool valid = true; |
| 2313 | |
| 2314 | String templates_error; |
| 2315 | valid = valid && has_valid_export_configuration(p_preset, templates_error, r_missing_templates, p_debug); |
| 2316 | |
| 2317 | if (!templates_error.is_empty()) { |
| 2318 | r_error += templates_error; |
| 2319 | } |
| 2320 | |
| 2321 | String export_plugins_warning; |
| 2322 | Vector<Ref<EditorExportPlugin>> export_plugins = EditorExport::get_singleton()->get_export_plugins(); |
| 2323 | for (int i = 0; i < export_plugins.size(); i++) { |
| 2324 | Ref<EditorExportPlatform> export_platform = Ref<EditorExportPlatform>(this); |
| 2325 | if (!export_plugins[i]->supports_platform(export_platform)) { |
| 2326 | continue; |
| 2327 | } |
| 2328 | |
| 2329 | String plugin_warning = export_plugins.write[i]->_has_valid_export_configuration(export_platform, p_preset); |
| 2330 | if (!plugin_warning.is_empty()) { |
| 2331 | export_plugins_warning += plugin_warning; |
| 2332 | } |
| 2333 | } |
| 2334 | |
| 2335 | if (!export_plugins_warning.is_empty()) { |
| 2336 | r_error += export_plugins_warning; |
| 2337 | } |
| 2338 | |
| 2339 | String project_configuration_error; |
| 2340 | valid = valid && has_valid_project_configuration(p_preset, project_configuration_error); |
| 2341 | |
| 2342 | if (!project_configuration_error.is_empty()) { |
| 2343 | r_error += project_configuration_error; |
| 2344 | } |
| 2345 | |
| 2346 | return valid; |
| 2347 | } |
| 2348 | |
| 2349 | Error EditorExportPlatform::ssh_run_on_remote(const String &p_host, const String &p_port, const Vector<String> &p_ssh_args, const String &p_cmd_args, String *r_out, int p_port_fwd) const { |
| 2350 | String ssh_path = EDITOR_GET("export/ssh/ssh"); |
no test coverage detected