Class: Pod::Downloader::Cache
- Inherits:
-
Object
- Object
- Pod::Downloader::Cache
- Defined in:
- lib/cocoapods-bb-PodAssistant/source_provider_hook.rb,
lib/cocoapods-bb-PodAssistant/source_provider_hook.rb
Instance Method Summary collapse
- #copy_and_clean(source, destination, spec) ⇒ Object
- #download(request, target) ⇒ Object
-
#origin_copy_and_clean ⇒ Object
使用方法别名hook copy_and_clean方法.
- #origin_download ⇒ Object
-
#verboseCopy_and_clean(source, destination, spec) ⇒ Object
–verbose输出详细信息,生成在home路径下.AllPodsTimeAndSize.csv的隐藏文件.
- #verboseDownload(request, time, dirSum) ⇒ Object
Instance Method Details
#copy_and_clean(source, destination, spec) ⇒ Object
93 94 95 96 97 98 99 100 |
# File 'lib/cocoapods-bb-PodAssistant/source_provider_hook.rb', line 93 def copy_and_clean(source, destination, spec) # 执行之前的拷贝到cache并且清除git clone临时目录的方法 origin_copy_and_clean(source, destination, spec) # 如果是--verbose,则输出详细信息,生成csv if $pluginIsVerbose == true verboseCopy_and_clean(source, destination, spec) end end |
#download(request, target) ⇒ Object
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 |
# File 'lib/cocoapods-bb-PodAssistant/source_provider_hook.rb', line 142 def download(request, target) # 获取downloader下载的文件路径 source = target.to_s # 赋值当前正在下载的文件路径给全局变量,为了解压zip的时候做判断 $pluginCurrentTarget = source # 赋值当前正在下载的pod名称给全局变量,为了解压zip的时候做输出 $pluginCurrentPodName = request.name.to_s # 获取clone执行前时间点 time1 = Time.new # 执行之前的download_source方法,接收该方法的返回值 result, podspecs = origin_download(request, target) # 如果不是--verbose,只输出总耗时,总下载大小 # 捕获一下异常,不会因为plugin的原因导致pod失败 begin # 获取clone执行后时间点 time2 = Time.new # 获取时间差 time = time2 - time1 if request.params["git".to_sym] # 说明是git方式 # 赋值一个给全局变量,之后时间统计要用到 $cloneTime = time # 赋值一个给全局变量,之后时间统计要用到 $cloneAllTime = $cloneAllTime + time # 计算downloader下载的文件大小,单位为M dirSum = Dir.size(source)/1000.0/1000.0 # 赋值给一个全局变量,之后输出会用到 $gitAllSize = $gitAllSize + dirSum else # 说明是CDN方式 # 赋值一个给全局变量,之后时间统计要用到 $downloadTime = time # 赋值一个给全局变量,之后时间统计要用到 $downloadAllTime = $downloadAllTime + time # 赋值给一个全局变量,之后输出会用到 $cdnDownloadAllTime = $cdnDownloadAllTime + $cdnDownloadTime # 赋值给一个全局变量,之后输出会用到 $cdnUnZipAllTime = $cdnUnZipAllTime + $cdnUnZipTime # 赋值给一个全局变量,之后输出会用到 $pluginCurrentZipAllSize = $pluginCurrentZipAllSize + $pluginCurrentZipSize end # 如果是--verbose,则输出详细信息,生成csv if $pluginIsVerbose == true verboseDownload(request, time, dirSum) end # 返回值 [result, podspecs] rescue => exception # 标红输出git clone hook异常 puts "[PodAssistant] download error(已捕获): #{exception}" end end |
#origin_copy_and_clean ⇒ Object
使用方法别名hook copy_and_clean方法
92 |
# File 'lib/cocoapods-bb-PodAssistant/source_provider_hook.rb', line 92 alias :origin_copy_and_clean :copy_and_clean |
#origin_download ⇒ Object
140 |
# File 'lib/cocoapods-bb-PodAssistant/source_provider_hook.rb', line 140 alias :origin_download :download |
#verboseCopy_and_clean(source, destination, spec) ⇒ Object
–verbose输出详细信息,生成在home路径下.AllPodsTimeAndSize.csv的隐藏文件
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/cocoapods-bb-PodAssistant/source_provider_hook.rb', line 103 def verboseCopy_and_clean(source, destination, spec) begin # 计算拷贝到的目录下所有文件总大小,单位为M dirSum = Dir.size(destination.to_s)/1000.0/1000.0 # 标红输出cache文件大小,单位为M puts "[PodAssistant] cachesize #{spec.name}: "+"#{dirSum}"+" M" # 如果相等则为CDN的下载方式 if $gitSize == 0 # CDN的下载方式 CSV.open("#{Dir.home}/.AllPodsTimeAndSize.csv", "a+") do |csv| csv << [spec.name, $downloadTime, $pluginCurrentZipSize, dirSum, "CDN不统计此项", "CDN", $cdnDownloadTime, $cdnUnZipTime] end else # git的下载方式 # 计算git clone大小和cache文件大小的差值,如果差值过大,则有优化空间 diffSize = $gitSize - dirSum # 标红输出差值 puts "[PodAssistant] diffSize = #{diffSize}"+"M " CSV.open("#{Dir.home}/.AllPodsTimeAndSize.csv", "a+") do |csv| csv << [spec.name, $cloneTime, $gitSize, dirSum, diffSize, "Git", "Git不统计此项", "Git不统计此项"] end end # 换行 puts rescue => exception # 输出拷贝清除方法异常 puts "[PodAssistant] verboseCopy_and_clean error(已捕获): #{exception}".red end $gitSize = 0 end |
#verboseDownload(request, time, dirSum) ⇒ Object
197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/cocoapods-bb-PodAssistant/source_provider_hook.rb', line 197 def verboseDownload(request, time, dirSum) if request.params["git".to_sym] # 说明是git方式 # 标红输出git clone耗时 puts "[PodAssistant] #{request.name.to_s} clone time: #{time}"+" S" # 赋值给一个全局变量,之后输出会用到 $gitSize = dirSum # 标红输出git clone下载文件大小 puts "[PodAssistant] #{request.name.to_s} clone allsize: "+"#{dirSum}"+" M" else # 说明是CDN方式 # 标红输出CDN 下载耗时 puts "[PodAssistant] #{request.name.to_s} CDN download time: #{$cdnDownloadTime}"+" S" # 标红输出CDN 解压耗时 puts "[PodAssistant] #{request.name.to_s} CDN unzip time: #{$cdnUnZipTime}"+" S" # 标红输出CDN 总耗时 puts "[PodAssistant] #{request.name.to_s} CDN All time: #{$downloadTime}"+" S" # 标红输出CDN clone下载文件大小 puts "[PodAssistant] #{request.name.to_s} CDN zipSize: "+"#{$pluginCurrentZipSize}"+" M" end end |