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