cocoapods-downloader
cocoapods-downloader copied to clipboard
Faulty extraction in remote_file.rb if compressed file contains only .framework
I'm trying to download via http a pod that is uploaded as a tarball with only a .framework as its contents. Right now, because the .framework is a technically just a directory, the cocoapods downloader will move the contents of the .framework without consideration of the structure. Specifically, I'm looking at lines 106-122 in remote_file.rb.
# If the archive is a tarball and it only contained a folder, move its
# contents to the target (#727)
#
if should_flatten?
contents = target_path.children
contents.delete(target_path + @filename)
entry = contents.first
if contents.count == 1 && entry.directory?
tmp_entry = entry.sub_ext("#{entry.extname}.tmp")
begin
FileUtils.move(entry, tmp_entry)
FileUtils.move(tmp_entry.children, target_path)
ensure
FileUtils.remove_entry(tmp_entry)
end
end
end
If the conditional is changed to if contents.count == 1 && entry.directory? && File.extname(entry) != '.framework'
, I am able to successfully pod install. Without it, the named pod folder in the pods directory of the project is empty.
This should probably be expanded to handle any "directory" that should remain a directory, such as .app, .framework, .ipa, .xcappdata, etc.
I added a preliminary PR to fix the issue and am available to make any corrections or edits.