Skip to content

Faulty extraction in remote_file.rb if compressed file contains only .framework #84

Open
@3sands

Description

@3sands

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions