Commit fffa804d authored by Danielle Tomlinson's avatar Danielle Tomlinson Committed by GitHub

Merge pull request #5927 from hborders/path_list_read_file_system_relative_path_speedup

[path_list.rb] Improve performance of read_file_system
parents 77d6a4a5 77d9580d
......@@ -8,6 +8,10 @@ To install release candidates run `[sudo] gem install cocoapods --pre`
##### Enhancements
* Improve performance of PathList.read_file_system
[Heath Borders](https://github.com/hborders)
[#5890](https://github.com/CocoaPods/CocoaPods/issues/5890)
* Cache result of uses_swift and should_build to speed up pod install.
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
[#5837](https://github.com/CocoaPods/CocoaPods/pull/5837)
......
......@@ -51,11 +51,22 @@ module Pod
raise Informative, "Attempt to read non existent folder `#{root}`."
end
escaped_root = escape_path_for_glob(root)
absolute_paths = Pathname.glob(escaped_root + '**/*', File::FNM_DOTMATCH)
absolute_paths = Pathname.glob(escaped_root + '**/*', File::FNM_DOTMATCH).lazy
dirs_and_files = absolute_paths.reject { |path| path.basename.to_s =~ /^\.\.?$/ }
relative_paths = dirs_and_files.map { |path| path.relative_path_from(root) }
sorted_paths = relative_paths.map(&:to_s).sort_by(&:upcase)
@dirs, @files = sorted_paths.partition { |path| File.directory?(root + path) }
dirs, files = dirs_and_files.partition { |path| File.directory?(path) }
root_length = root.cleanpath.to_s.length + File::SEPARATOR.length
sorted_relative_paths_from_full_paths = lambda do |paths|
relative_paths = paths.lazy.map do |path|
path_string = path.to_s
path_string.slice(root_length, path_string.length - root_length)
end
relative_paths.sort_by(&:upcase)
end
@dirs = sorted_relative_paths_from_full_paths.call(dirs)
@files = sorted_relative_paths_from_full_paths.call(files)
@glob_cache = {}
end
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment