class Pod::Command::UpdateAll
Public Instance Methods
getPrepareUpdateComponents(prepareUpdateComponentsPath)
click to toggle source
拿到待更新的组件名
# File lib/cocoapods-wxpodhook/helper.rb, line 117 def getPrepareUpdateComponents(prepareUpdateComponentsPath) prepareUpdateComponents = Array.new(); # prepareUpdateComponentsPath不存在的异常需要处理 file = File.open(prepareUpdateComponentsPath) file.each_line {|line| if line.start_with?("- ") # puts "**** #{line}" # line内容的示例如下: - AFNetworking 3.2.0 -> 3.2.0 (latest version 4.0.1) array = line.split(' ') if array.size > 4 # 拿到组件名 component_name = array[1] # 拿到当前的版本号 component_curversion = array[2] # 拿到repo中的版本号 component_repoversion = array[4] # 如果版本号不相等则认为需要更新 if !self.version_isEqual(component_curversion, component_repoversion) prepareUpdateComponents.push(component_name) end end end } file.close # 删除文件 FileUtils.rm_r(prepareUpdateComponentsPath) return prepareUpdateComponents end
run()
click to toggle source
# File lib/cocoapods-wxpodhook/helper.rb, line 153 def run before = Time.new # 先更新repo CocoapodsWxpodhook::Helper.new().AutoUpdateRepo(); # 先拿到当前脚本执行的文件路径 currentFilePath = Dir.pwd # 待更新的组件txt目录 prepareUpdateComponentsPath = File.join(currentFilePath, "prepareUpdateComponents.txt") # puts prepareUpdateComponentsPath # 先删除已存在的txt文件 if FileTest.exist?(prepareUpdateComponentsPath) FileUtils.rm_r(prepareUpdateComponentsPath) end put_redMsg("组件是否需要更新比对中") # 先执行pod outdated success = system("pod outdated --no-repo-update > #{prepareUpdateComponentsPath}") if !success put_redMsg("pod outdated失败") textAll = File.read(prepareUpdateComponentsPath) put_redMsg(textAll) return end # 解析txt文件,拿到待更新的组件数组 componentArr = self.getPrepareUpdateComponents(prepareUpdateComponentsPath) prepareUpdateComponentStr = componentArr.join(" ") if componentArr.size == 0 || prepareUpdateComponentStr.length == 0 put_redMsg("暂无需要更新的组件") return end put_redMsg("待更新的组件列表如下 \n #{prepareUpdateComponentStr}") put_redMsg("开始更新组件 \n #{prepareUpdateComponentStr}") # 执行pod update system("pod update #{prepareUpdateComponentStr} --no-repo-update") now = Time.new(); time = now.to_i - before.to_i; put_redMsg("组件更新完毕,共耗时 #{time}秒") end
version_isEqual(curversion, repoversion)
click to toggle source
版本号对比
# File lib/cocoapods-wxpodhook/helper.rb, line 91 def version_isEqual(curversion, repoversion) if curversion == repoversion return true else if repoversion.start_with?(curversion) # 截取剩下的字符串 splitedStr = repoversion.delete(curversion) splitedStrArr = splitedStr.split(".") sum = 0 splitedStrArr.each do |item| sum += item.to_i end if sum == 0 return true else return false end else return false end end end