You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-14 13:41:12 +00:00
Merge pull request #58986 from akien-mga/diraccessref
This commit is contained in:
@@ -530,7 +530,7 @@ Error EditorExportPlatformIOS::_export_icons(const Ref<EditorExportPreset> &p_pr
|
||||
String json_description = "{\"images\":[";
|
||||
String sizes;
|
||||
|
||||
DirAccess *da = DirAccess::open(p_iconset_dir);
|
||||
DirAccessRef da = DirAccess::open(p_iconset_dir);
|
||||
ERR_FAIL_COND_V_MSG(!da, ERR_CANT_OPEN, "Cannot open directory '" + p_iconset_dir + "'.");
|
||||
|
||||
for (uint64_t i = 0; i < (sizeof(icon_infos) / sizeof(icon_infos[0])); ++i) {
|
||||
@@ -570,7 +570,6 @@ Error EditorExportPlatformIOS::_export_icons(const Ref<EditorExportPreset> &p_pr
|
||||
}
|
||||
|
||||
if (err) {
|
||||
memdelete(da);
|
||||
String err_str = String("Failed to export icon(" + String(info.preset_key) + "): '" + icon_path + "'.");
|
||||
ERR_PRINT(err_str.utf8().get_data());
|
||||
return err;
|
||||
@@ -588,7 +587,6 @@ Error EditorExportPlatformIOS::_export_icons(const Ref<EditorExportPreset> &p_pr
|
||||
json_description += String("}");
|
||||
}
|
||||
json_description += "]}";
|
||||
memdelete(da);
|
||||
|
||||
FileAccess *json_file = FileAccess::open(p_iconset_dir + "Contents.json", FileAccess::WRITE);
|
||||
ERR_FAIL_COND_V(!json_file, ERR_CANT_CREATE);
|
||||
@@ -674,7 +672,7 @@ Error EditorExportPlatformIOS::_export_loading_screen_file(const Ref<EditorExpor
|
||||
}
|
||||
|
||||
Error EditorExportPlatformIOS::_export_loading_screen_images(const Ref<EditorExportPreset> &p_preset, const String &p_dest_dir) {
|
||||
DirAccess *da = DirAccess::open(p_dest_dir);
|
||||
DirAccessRef da = DirAccess::open(p_dest_dir);
|
||||
ERR_FAIL_COND_V_MSG(!da, ERR_CANT_OPEN, "Cannot open directory '" + p_dest_dir + "'.");
|
||||
|
||||
for (uint64_t i = 0; i < sizeof(loading_screen_infos) / sizeof(loading_screen_infos[0]); ++i) {
|
||||
@@ -712,7 +710,6 @@ Error EditorExportPlatformIOS::_export_loading_screen_images(const Ref<EditorExp
|
||||
err = da->copy(loading_screen_file, p_dest_dir + info.export_name);
|
||||
}
|
||||
if (err) {
|
||||
memdelete(da);
|
||||
String err_str = String("Failed to export loading screen (") + info.preset_key + ") from path '" + loading_screen_file + "'.";
|
||||
ERR_PRINT(err_str.utf8().get_data());
|
||||
return err;
|
||||
@@ -760,7 +757,6 @@ Error EditorExportPlatformIOS::_export_loading_screen_images(const Ref<EditorExp
|
||||
}
|
||||
}
|
||||
}
|
||||
memdelete(da);
|
||||
|
||||
return OK;
|
||||
}
|
||||
@@ -966,21 +962,15 @@ void EditorExportPlatformIOS::_add_assets_to_project(const Ref<EditorExportPrese
|
||||
}
|
||||
|
||||
Error EditorExportPlatformIOS::_copy_asset(const String &p_out_dir, const String &p_asset, const String *p_custom_file_name, bool p_is_framework, bool p_should_embed, Vector<IOSExportAsset> &r_exported_assets) {
|
||||
DirAccess *filesystem_da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
ERR_FAIL_COND_V_MSG(!filesystem_da, ERR_CANT_CREATE, "Cannot create DirAccess for path '" + p_out_dir + "'.");
|
||||
|
||||
String binary_name = p_out_dir.get_file().get_basename();
|
||||
|
||||
DirAccess *da = DirAccess::create_for_path(p_asset);
|
||||
DirAccessRef da = DirAccess::create_for_path(p_asset);
|
||||
if (!da) {
|
||||
memdelete(filesystem_da);
|
||||
ERR_FAIL_V_MSG(ERR_CANT_CREATE, "Can't create directory: " + p_asset + ".");
|
||||
}
|
||||
bool file_exists = da->file_exists(p_asset);
|
||||
bool dir_exists = da->dir_exists(p_asset);
|
||||
if (!file_exists && !dir_exists) {
|
||||
memdelete(da);
|
||||
memdelete(filesystem_da);
|
||||
return ERR_FILE_NOT_FOUND;
|
||||
}
|
||||
|
||||
@@ -1040,19 +1030,18 @@ Error EditorExportPlatformIOS::_copy_asset(const String &p_out_dir, const String
|
||||
destination = p_out_dir.plus_file(asset_path);
|
||||
}
|
||||
|
||||
DirAccessRef filesystem_da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
ERR_FAIL_COND_V_MSG(!filesystem_da, ERR_CANT_CREATE, "Cannot create DirAccess for path '" + p_out_dir + "'.");
|
||||
|
||||
if (!filesystem_da->dir_exists(destination_dir)) {
|
||||
Error make_dir_err = filesystem_da->make_dir_recursive(destination_dir);
|
||||
if (make_dir_err) {
|
||||
memdelete(da);
|
||||
memdelete(filesystem_da);
|
||||
return make_dir_err;
|
||||
}
|
||||
}
|
||||
|
||||
Error err = dir_exists ? da->copy_dir(p_asset, destination) : da->copy(p_asset, destination);
|
||||
memdelete(da);
|
||||
if (err) {
|
||||
memdelete(filesystem_da);
|
||||
return err;
|
||||
}
|
||||
IOSExportAsset exported_asset = { binary_name.plus_file(asset_path), p_is_framework, p_should_embed };
|
||||
@@ -1117,8 +1106,6 @@ Error EditorExportPlatformIOS::_copy_asset(const String &p_out_dir, const String
|
||||
}
|
||||
}
|
||||
|
||||
memdelete(filesystem_da);
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
@@ -1423,29 +1410,29 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
|
||||
return ERR_FILE_BAD_PATH;
|
||||
}
|
||||
|
||||
DirAccess *da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
if (da) {
|
||||
String current_dir = da->get_current_dir();
|
||||
{
|
||||
DirAccessRef da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
if (da) {
|
||||
String current_dir = da->get_current_dir();
|
||||
|
||||
// remove leftovers from last export so they don't interfere
|
||||
// in case some files are no longer needed
|
||||
if (da->change_dir(dest_dir + binary_name + ".xcodeproj") == OK) {
|
||||
da->erase_contents_recursive();
|
||||
}
|
||||
if (da->change_dir(dest_dir + binary_name) == OK) {
|
||||
da->erase_contents_recursive();
|
||||
}
|
||||
// remove leftovers from last export so they don't interfere
|
||||
// in case some files are no longer needed
|
||||
if (da->change_dir(dest_dir + binary_name + ".xcodeproj") == OK) {
|
||||
da->erase_contents_recursive();
|
||||
}
|
||||
if (da->change_dir(dest_dir + binary_name) == OK) {
|
||||
da->erase_contents_recursive();
|
||||
}
|
||||
|
||||
da->change_dir(current_dir);
|
||||
da->change_dir(current_dir);
|
||||
|
||||
if (!da->dir_exists(dest_dir + binary_name)) {
|
||||
Error err = da->make_dir(dest_dir + binary_name);
|
||||
if (err) {
|
||||
memdelete(da);
|
||||
return err;
|
||||
if (!da->dir_exists(dest_dir + binary_name)) {
|
||||
Error err = da->make_dir(dest_dir + binary_name);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
}
|
||||
}
|
||||
memdelete(da);
|
||||
}
|
||||
|
||||
if (ep.step("Making .pck", 0)) {
|
||||
@@ -1501,7 +1488,7 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
|
||||
|
||||
Vector<IOSExportAsset> assets;
|
||||
|
||||
DirAccess *tmp_app_path = DirAccess::create_for_path(dest_dir);
|
||||
DirAccessRef tmp_app_path = DirAccess::create_for_path(dest_dir);
|
||||
ERR_FAIL_COND_V(!tmp_app_path, ERR_CANT_CREATE);
|
||||
|
||||
print_line("Unzipping...");
|
||||
@@ -1580,7 +1567,6 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
|
||||
if (dir_err) {
|
||||
ERR_PRINT("Can't create '" + dir_name + "'.");
|
||||
unzClose(src_pkg_zip);
|
||||
memdelete(tmp_app_path);
|
||||
return ERR_CANT_CREATE;
|
||||
}
|
||||
}
|
||||
@@ -1590,7 +1576,6 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
|
||||
if (!f) {
|
||||
ERR_PRINT("Can't write '" + file + "'.");
|
||||
unzClose(src_pkg_zip);
|
||||
memdelete(tmp_app_path);
|
||||
return ERR_CANT_CREATE;
|
||||
};
|
||||
f->store_buffer(data.ptr(), data.size());
|
||||
@@ -1613,7 +1598,6 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
|
||||
|
||||
if (!found_library) {
|
||||
ERR_PRINT("Requested template library '" + library_to_use + "' not found. It might be missing from your template archive.");
|
||||
memdelete(tmp_app_path);
|
||||
return ERR_FILE_NOT_FOUND;
|
||||
}
|
||||
|
||||
@@ -1671,7 +1655,6 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
|
||||
Error lib_copy_err = tmp_app_path->copy(static_lib_path, dest_lib_file_path);
|
||||
if (lib_copy_err != OK) {
|
||||
ERR_PRINT("Can't copy '" + static_lib_path + "'.");
|
||||
memdelete(tmp_app_path);
|
||||
return lib_copy_err;
|
||||
}
|
||||
}
|
||||
@@ -1682,7 +1665,6 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
|
||||
if (!tmp_app_path->dir_exists(iconset_dir)) {
|
||||
err = tmp_app_path->make_dir_recursive(iconset_dir);
|
||||
}
|
||||
memdelete(tmp_app_path);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
@@ -1692,43 +1674,43 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
|
||||
return err;
|
||||
}
|
||||
|
||||
bool use_storyboard = p_preset->get("storyboard/use_launch_screen_storyboard");
|
||||
{
|
||||
bool use_storyboard = p_preset->get("storyboard/use_launch_screen_storyboard");
|
||||
|
||||
String launch_image_path = dest_dir + binary_name + "/Images.xcassets/LaunchImage.launchimage/";
|
||||
String splash_image_path = dest_dir + binary_name + "/Images.xcassets/SplashImage.imageset/";
|
||||
String launch_image_path = dest_dir + binary_name + "/Images.xcassets/LaunchImage.launchimage/";
|
||||
String splash_image_path = dest_dir + binary_name + "/Images.xcassets/SplashImage.imageset/";
|
||||
|
||||
DirAccess *launch_screen_da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
DirAccessRef launch_screen_da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
|
||||
if (!launch_screen_da) {
|
||||
return ERR_CANT_CREATE;
|
||||
}
|
||||
|
||||
if (use_storyboard) {
|
||||
print_line("Using Launch Storyboard");
|
||||
|
||||
if (launch_screen_da->change_dir(launch_image_path) == OK) {
|
||||
launch_screen_da->erase_contents_recursive();
|
||||
launch_screen_da->remove(launch_image_path);
|
||||
if (!launch_screen_da) {
|
||||
return ERR_CANT_CREATE;
|
||||
}
|
||||
|
||||
err = _export_loading_screen_file(p_preset, splash_image_path);
|
||||
} else {
|
||||
print_line("Using Launch Images");
|
||||
if (use_storyboard) {
|
||||
print_line("Using Launch Storyboard");
|
||||
|
||||
const String launch_screen_path = dest_dir + binary_name + "/Launch Screen.storyboard";
|
||||
if (launch_screen_da->change_dir(launch_image_path) == OK) {
|
||||
launch_screen_da->erase_contents_recursive();
|
||||
launch_screen_da->remove(launch_image_path);
|
||||
}
|
||||
|
||||
launch_screen_da->remove(launch_screen_path);
|
||||
err = _export_loading_screen_file(p_preset, splash_image_path);
|
||||
} else {
|
||||
print_line("Using Launch Images");
|
||||
|
||||
if (launch_screen_da->change_dir(splash_image_path) == OK) {
|
||||
launch_screen_da->erase_contents_recursive();
|
||||
launch_screen_da->remove(splash_image_path);
|
||||
const String launch_screen_path = dest_dir + binary_name + "/Launch Screen.storyboard";
|
||||
|
||||
launch_screen_da->remove(launch_screen_path);
|
||||
|
||||
if (launch_screen_da->change_dir(splash_image_path) == OK) {
|
||||
launch_screen_da->erase_contents_recursive();
|
||||
launch_screen_da->remove(splash_image_path);
|
||||
}
|
||||
|
||||
err = _export_loading_screen_images(p_preset, launch_image_path);
|
||||
}
|
||||
|
||||
err = _export_loading_screen_images(p_preset, launch_image_path);
|
||||
}
|
||||
|
||||
memdelete(launch_screen_da);
|
||||
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
@@ -1747,15 +1729,17 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
|
||||
memdelete(f);
|
||||
|
||||
#ifdef OSX_ENABLED
|
||||
if (ep.step("Code-signing dylibs", 2)) {
|
||||
return ERR_SKIP;
|
||||
{
|
||||
if (ep.step("Code-signing dylibs", 2)) {
|
||||
return ERR_SKIP;
|
||||
}
|
||||
DirAccess *dylibs_dir = DirAccess::open(dest_dir + binary_name + "/dylibs");
|
||||
ERR_FAIL_COND_V(!dylibs_dir, ERR_CANT_OPEN);
|
||||
CodesignData codesign_data(p_preset, p_debug);
|
||||
err = _walk_dir_recursive(dylibs_dir, _codesign, &codesign_data);
|
||||
memdelete(dylibs_dir);
|
||||
ERR_FAIL_COND_V(err, err);
|
||||
}
|
||||
DirAccess *dylibs_dir = DirAccess::open(dest_dir + binary_name + "/dylibs");
|
||||
ERR_FAIL_COND_V(!dylibs_dir, ERR_CANT_OPEN);
|
||||
CodesignData codesign_data(p_preset, p_debug);
|
||||
err = _walk_dir_recursive(dylibs_dir, _codesign, &codesign_data);
|
||||
memdelete(dylibs_dir);
|
||||
ERR_FAIL_COND_V(err, err);
|
||||
|
||||
if (ep.step("Making .xcarchive", 3)) {
|
||||
return ERR_SKIP;
|
||||
|
||||
Reference in New Issue
Block a user