class BDIntegrate
Public Class Methods
adaptToiOSStruct(response)
click to toggle source
# File lib/integrate.rb, line 56 def self.adaptToiOSStruct(response) targetNameArray = Array.new targetHash = Hash.new response["data"]["components"].each do |pod| #先判断是否有新增target,因为平台中组件不会重复 pod["app_struct"].keys.each do |targetName| unless targetNameArray.include?(targetName) targetNameArray << targetName # 创建对应的target targetDef = Hash.new targetDef["name"] = targetName targetDef["components"] = Array.new # 添加到target中 targetHash[targetName] = targetDef end # 创建pod的定义 pod_def = Hash.new pod_def["name"] = pod["name"] pod_def["version"] = pod["version"] if pod["app_struct"][targetName].size != 0 pod_def["subspecs"] = pod["app_struct"][targetName] end targetHash[targetName]["components"] << pod_def end end project_adapt = targetHash.values completeData = Hash.new completeData["projects"] = project_adapt completeData["onwers"] = "wusizhen.arch" completeData["BM"] = "zhangxingyu.bs" completeData["uuid"] = "toutiao" completeData end
demo_generatePodfile_Map()
click to toggle source
# File lib/integrate.rb, line 115 def self.demo_generatePodfile_Map podfile = " # owner:#{@@podfile_json['owner'].to_s} # BM:#{@@podfile_json['BM']} " @@podfile_json['projects'].each do |project| podfile = podfile + "\n" + " target \'#{project['name']}\' do " project['components'].each do |component| podfile = podfile + " pod \'#{component['name']}\',\'#{component['version']}\'" if component['subspecs'] podfile = podfile + ",:subspecs=>[\n" component = component['subspecs'].map { |sub| "\'#{sub}\'"} subspec_des = component.join(sep=",\n ") podfile = podfile + " " + subspec_des + "\n ]" end end podfile = podfile + "\n" + "end" end system('rm -rf Podfile_Map') aFile = File.new("Podfile_Map", "a+") if aFile aFile.syswrite(podfile) end end
demo_generateUrl()
click to toggle source
# File lib/integrate.rb, line 111 def self.demo_generateUrl url = "http://tosv.byted.org/obj/iosbinary/integrate/#{@@config['integrateID']}/#{@@config['developItemID']}/#{@@config['itemHistoryID']}/component.json" end
demo_get_response(url)
click to toggle source
# File lib/integrate.rb, line 94 def self.demo_get_response(url) begin url_str = URI.parse(url) $origin = File.dirname(__FILE__) response = Net::HTTP.get_response(url_str) body = response.body status = response.code raise '网络请求出错误,使用本地版本' unless status == '200' @@podfile_json = JSON.parse(body) self.generatePodfile_Map rescue Exception => ex p ex end end
generatePodfile_Map()
click to toggle source
# File lib/integrate.rb, line 144 def self.generatePodfile_Map podfile = " # owner:#{@@podfile_json['owner'].to_s} # BM:#{@@podfile_json['BM']} " @@podfile_json['projects'].each do |project| podfile = podfile + "\n" + " target \'#{project['name']}\' do " project['components'].each do |component| podfile = podfile + " pod \'#{component['name']}\',\'#{component['version']}\'" if component['subspecs'] podfile = podfile + ",:subspecs=>[\n" component = component['subspecs'].map { |sub| "\'#{sub}\'"} subspec_des = component.join(sep=",\n ") podfile = podfile + " " + subspec_des + "\n ]" end end podfile = podfile + "\n" + "end" end system('rm -rf Podfile_Map') aFile = File.new("Podfile_Map", "a+") if aFile aFile.syswrite(podfile) end end
generateUrl()
click to toggle source
# File lib/stable/integrate.rb, line 32 def self.generateUrl url = "http://tosv.byted.org/obj/iosbinary/integrate/#{@@config['integrateID']}/#{@@config['developItemID']}/#{@@config['itemHistoryID']}/component.json" end
generatorUrl()
click to toggle source
# File lib/integrate.rb, line 37 def self.generatorUrl url = 'https://ios.bytedance.net/api/v1/mergeRequest/components_list' query = Hash.new @@config.each do |key,value| case key when 'integrateID' next when 'developItemID' query['mrId'] = value when 'itemHistoryID' query['itemHistoryID'] = value end end queryUrl = query.to_a.map { |value| value.join("=") }.join("&") url + "?" + queryUrl end
get_response(url)
click to toggle source
# File lib/integrate.rb, line 20 def self.get_response(url) begin url_str = URI.parse(url) $origin = File.dirname(__FILE__) response = Net::HTTP.get_response(url_str) body = response.body status = response.code raise '网络请求出错误,使用本地版本' unless status == '200' @@podfile_json = self.adaptToiOSStruct(JSON.parse(body)) self.generatePodfile_Map rescue Exception => ex p ex end end
load_file(file_path)
click to toggle source
# File lib/integrate.rb, line 8 def self.load_file(file_path) if File::file?(file_path) @@config = Pod::YAMLHelper.load_file(file_path) if @@config['developItemID'] == 'abc' self.demo_get_response(self.demo_generateUrl) else self.get_response(self.generatorUrl) end end end