class Object

Constants

Binary
CurrentPodfilePath
Deprecated
DevPods
EachDevPods
Now
PODS
Podfile_Map
SourceContainer
SourceContainerUri
Target_Dev_Pod_Container
Target_Dev_Pods_Map
WarningModules

Public Instance Methods

adaptPodinfoToHashArray(podInfo) click to toggle source
# File lib/bd_pod_extension_net.rb, line 319
def adaptPodinfoToHashArray(podInfo)
  argsment = Array.new()
  podInfo.each do |key,value|
    if key != 'name' && key != 'version'
      argsment << Hash[key.to_sym => value]
    end
  end
  argsment
end
bd_awesome_func(text) click to toggle source
# File lib/bd_pod_extension_net.rb, line 242
def bd_awesome_func(text)
  system ("osascript -e 'display notification \"废弃理由:#{text},\n 组件废弃时间:#{text} \" with title \"#{text}-#{text} 被废弃\" subtitle \"操作人:#{text}\" '")

end
bd_enable_DevelopMode() click to toggle source
# File lib/bd_pod_extension_net.rb, line 271
def bd_enable_DevelopMode
  if File::exist?('Podfile_Patch')
    $Bd_enable_DevelopMode = true
    load 'Podfile_Patch'
  end
end
bd_fetch(tag) click to toggle source
# File lib/bd_pod_extension_net.rb, line 287
def bd_fetch(tag)
  component = get_fetch('http://tosv.byted.org/obj/iosbinary/component_test.json')
  $AllInfo = JSON.parse(component.body)
  raise "标签不相符" unless $AllInfo['uuid'] == tag
  createProject
end
bd_ignore_binary!() click to toggle source
# File lib/bd_pod_extension_net.rb, line 411
def bd_ignore_binary!()
  raise "You should set bd_ignore_binary! before bd_use_binary! 、 bd_use_source!、bd_use_app" if $BD_used
  $BD_ignore = 'binary'
  bd_use_source!
end
bd_ignore_source!() click to toggle source
# File lib/bd_pod_extension_net.rb, line 417
def bd_ignore_source!()
  raise "You should set bd_ignore_source! before bd_use_binary! 、 and bd_use_source!、bd_use_app" if $BD_used
  $BD_ignore = 'source'
  bd_use_binary!
end
bd_source(url) click to toggle source
# File lib/bd_pod_extension_net.rb, line 423
def bd_source(url)
  if $LOADEDBINARYSOURCE == 0
    source 'git@code.byted.org:wusizhen.arch/ios_frameworks.git'
    $LOADEDBINARYSOURCE = 1
  end
  source url
end
bd_use_app(*appName) click to toggle source
# File lib/bd_pod_extension_net.rb, line 365
def bd_use_app (*appName)
  plugin 'cocoapods-bytedance-transform'
  plugin 'cocoapods-bytedance-Slardar'
  plugin 'cocoapods-bytedance-PlatformRecord'
  plugin 'cocoapods-bytedance-DebugBinary'
  $BD_used = true
  $Apps = Array.new
  for app in 0...appName.length
    each_bd_use_app(appName[app])
  end
end
bd_use_binary!() click to toggle source
# File lib/bd_pod_extension_net.rb, line 405
def bd_use_binary!()
  $BD_used = true
  raise "You have already setted bd_use_source! or bd_ignore_binary!" unless $NEEDSOURCE != 1
  $NEEDBINARY = 1
end
bd_use_source!() click to toggle source
# File lib/bd_pod_extension_net.rb, line 399
def bd_use_source!()
  $BD_used = true
  raise "You have already setted bd_use_binary! or bd_ignore_source!" unless $NEEDBINARY != 1
  $NEEDSOURCE = 1
end
bytedanceAnalyzeSpeed(enable=true,type = {:project_type => 'objective-c'}) click to toggle source
# File lib/bd_pod_extension_net.rb, line 354
def bytedanceAnalyzeSpeed(enable=true,type = {:project_type => 'objective-c'})
  if enable
    if type[:project_type] == 'swift'
      removeDependencyVersion
    elsif type[:project_type] == 'objective-c'
      startSpeed
    end

  end
end
bytedanceRemoveAllConfuse() click to toggle source
# File lib/bd_pod_extension_net.rb, line 350
def bytedanceRemoveAllConfuse
  $Confuse_Enable = true
end
colorize(text, color = "default", bgColor = "default") click to toggle source
# File lib/bd_pod_extension_net.rb, line 701
def colorize(text, color = "default", bgColor = "default")
  colors = {"default" => "38","black" => "30","red" => "31","green" => "32","brown" => "33", "blue" => "34", "purple" => "35",
            "cyan" => "36", "gray" => "37", "dark gray" => "1;30", "light red" => "1;31", "light green" => "1;32", "yellow" => "1;33",
            "light blue" => "1;34", "light purple" => "1;35", "light cyan" => "1;36", "white" => "1;37"}
  bgColors = {"default" => "0", "black" => "40", "red" => "41", "green" => "42", "brown" => "43", "blue" => "44",
              "purple" => "45", "cyan" => "46", "gray" => "47", "dark gray" => "100", "light red" => "101", "light green" => "102",
              "yellow" => "103", "light blue" => "104", "light purple" => "105", "light cyan" => "106", "white" => "107"}
  color_code = colors[color]
  bgColor_code = bgColors[bgColor]
  return "\033[#{bgColor_code};#{color_code}m#{text}\033[0m"
end
common_pod_command(moduleName,argsment,binary=1) click to toggle source
# File lib/bd_pod_extension_net.rb, line 522
def common_pod_command(moduleName,argsment,binary=1)
  if $CurrentDevPods
    return unless !$CurrentDevPods.include?(moduleName)
  end
  moduleName,argsment = subspecHandle(moduleName,argsment)
  if argsment.empty?
    puts "#{colorize("===============================================================================","purple")}"
    puts "#{colorize("#{moduleName} undefined the exact version","purple")}"
    puts "#{colorize("===============================================================================","purple")}"
    bd_platform_pod moduleName
  else
    versionTemparray = argsment.reject{ |item|
      item.class != String || item == -1
    }
    newarray = argsment.reject { |item|
      item.class == String || item == -1
    }

    if versionTemparray.empty?
      if newarray.length == 0
        puts "#{colorize("===============================================================================","purple")}"
        puts "#{colorize("#{moduleName} undefined the exact version","purple")}"
        puts "#{colorize("===============================================================================","purple")}"
        bd_platform_pod moduleName
      elsif newarray.length == 1
        bd_platform_pod moduleName,newarray[0]
      elsif newarray.length == 2
        bd_platform_pod moduleName,newarray[0],newarray[1]
      elsif newarray.length == 3
        bd_platform_pod moduleName,newarray[0],newarray[1],newarray[2]
      elsif newarray.length == 4
        bd_platform_pod moduleName,newarray[0],newarray[1],newarray[2],newarray[3]
      end
    else
      if newarray.empty?
        bd_platform_pod moduleName,pod_binary_version_check(moduleName,versionTemparray[0],binary)
      elsif newarray.length == 1
        bd_platform_pod moduleName,pod_binary_version_check(moduleName,versionTemparray[0],binary),newarray[0]
      elsif newarray.length == 2
        bd_platform_pod moduleName,pod_binary_version_check(moduleName,versionTemparray[0],binary),newarray[0],newarray[1]
      elsif newarray.length == 3
        bd_platform_pod moduleName,pod_binary_version_check(moduleName,versionTemparray[0],binary),newarray[0],newarray[1],newarray[2]
      elsif newarray.length == 4
        bd_platform_pod moduleName,pod_binary_version_check(moduleName,versionTemparray[0],binary),newarray[0],newarray[1],newarray[2],newarray[3]
      end
    end
  end

end
containSubspecComponent(argsment) click to toggle source
# File lib/bd_pod_extension_net.rb, line 508
def containSubspecComponent(argsment)
  if !argsment.empty?
    argsment.each do |subspec|
      if subspec.class == Hash
        if subspec.keys.include?(:subspecs)
          return true
        end
      end
    end
  end
  return false
end
createProject() click to toggle source
# File lib/bd_pod_extension_net.rb, line 294
def createProject
  $AllInfo['projects'].each do |project|
    target project['name'] do
      project['components'].each do |podInfo|
        value = adaptPodinfoToHashArray(podInfo)
        if podInfo['version']

          case value.size
          when 0
            pod_binary podInfo['name'],podInfo['version']
          when 1
            pod_binary podInfo['name'],podInfo['version'],value[0]
          when 2
            pod_binary podInfo['name'],podInfo['version'],value[0],value[1]
          when 3
            pod_binary podInfo['name'],podInfo['version'],value[0],value[1],value[2]
          when 4
            pod_binary podInfo['name'],podInfo['version'],value[0],value[1],value[2],value[3]
          end
        end
      end
    end
  end
end
each_bd_use_app(appName="toutiao") click to toggle source
# File lib/bd_pod_extension_net.rb, line 377
def each_bd_use_app(appName="toutiao")
  apps = SourceContainer["apps"]
  $CurrentApp = apps["#{appName}"]
  $Apps << $CurrentApp
  allsource = SourceContainer["source"]
  placehold = apps["#{appName}"]
  currentSourceContainer = allsource["#{placehold}"]
  if currentSourceContainer
    currentSourceContainer.each do |eachSource|
      next if $BD_ignore == 'binary' && eachSource.include?("_binary_repo.git")
      next if $BD_ignore == 'source' && eachSource.include?("_source_repo.git")
      source eachSource;
    end
  else
    source 'git@code.byted.org:iOS_Library/toutiao_binary_repo.git'
    source 'git@code.byted.org:iOS_Library/toutiao_source_repo.git'
    source 'git@code.byted.org:TTIOS/cocoapods-master-specs-mirror.git'
    source 'git@code.byted.org:TTVideo/ttvideo-pods.git'
    source 'git@code.byted.org:ugc/UGCSpecs.git'
  end
end
getBinaryContainerByApp(apps=["13"],moduleName) click to toggle source
# File lib/bd_pod_extension_net.rb, line 673
def getBinaryContainerByApp(apps=["13"],moduleName)
  versions = Array.new
  apps.each do |app|
    currentAppVersions = getEachBinaryContainerByApp(app,moduleName)
    if currentAppVersions
      versions = versions | currentAppVersions
    end
  end
  return versions
end
getDeprecatedContainerByApp(apps=["13"],moduleName) click to toggle source
# File lib/bd_pod_extension_net.rb, line 649
def getDeprecatedContainerByApp(apps=["13"],moduleName)
  raise '不应该在Podfile_Patch使用pod_source or pod_binary' if !apps && $Bd_enable_DevelopMode
  versions = Array.new
  apps.each do |app|
    currentAppVersions = getEachDeprecatedContainerByApp(app,moduleName)
    if currentAppVersions
      versions = versions | currentAppVersions
    end
  end
  return versions
end
getEachBinaryContainerByApp(appName="13",moduleName) click to toggle source
# File lib/bd_pod_extension_net.rb, line 684
def getEachBinaryContainerByApp(appName="13",moduleName)

  currentAppBinaryContainer = PODS["#{appName}"]

  if !currentAppBinaryContainer
    return nil
  end
  currentModuleVersions = currentAppBinaryContainer["#{moduleName}"]

  if !currentModuleVersions

    currentModuleVersions = PODS["#{moduleName}"]
  end

  return currentModuleVersions;
end
getEachDeprecatedContainerByApp(appName="13",moduleName) click to toggle source
# File lib/bd_pod_extension_net.rb, line 661
def getEachDeprecatedContainerByApp(appName="13",moduleName)

  currentAppBinaryContainer = Deprecated["#{appName}"]

  if !currentAppBinaryContainer
    return nil
  end
  currentModuleVersions = currentAppBinaryContainer["#{moduleName}"]

  return currentModuleVersions;
end
get_fetch(url) click to toggle source
# File lib/bd_pod_extension_net.rb, line 278
def get_fetch(url)
  begin
    url_str = URI.parse(url)
    return Net::HTTP.get_response(url_str)
  rescue Exception => ex
    p ex
  end
end
get_response(url) { |callObject| ... } click to toggle source
# File lib/bd_pod_extension_net.rb, line 79
def get_response(url)
  begin
    url_str = URI.parse(url)
    callObject =  Net::HTTP.get_response(url_str)
    yield callObject
  rescue Exception => ex
    p ex
  end
end
loadDev() click to toggle source
# File lib/bd_pod_extension_net.rb, line 89
def loadDev
  if File::exist?('Podfile_Dev')
    $Loaded_dev = true
  end
end
pod_binary(moduleName,version=-1,args2=-1,args3=-1,args4=-1) click to toggle source
# File lib/bd_pod_extension_net.rb, line 459
def pod_binary(moduleName,version=-1,args2=-1,args3=-1,args4=-1)
  argsment = rebuild_pod(version,args2,args3,args4,moduleName)
  if $NEEDSOURCE == 1
    common_pod_command(moduleName,argsment,-1)
  else
    common_pod_command(moduleName,argsment,1)
  end
end
pod_binary_version_check(moduleName,version,needcheck=-1) click to toggle source
# File lib/bd_pod_extension_net.rb, line 586
def pod_binary_version_check(moduleName,version,needcheck=-1)
  deprecatedVersions = getDeprecatedContainerByApp($Apps,moduleName)
  if deprecatedVersions
    deprecatedVersions.each do |deprecated|
      if deprecated["version"] == version
        show_deprecated(moduleName,deprecated)
      end
    end
  end
  if needcheck == -1
    return version
  end
  if version.class == Hash
    if (version.keys.include?(:path)) ||  (version.keys.include?(:git))
      return version
    end
  end
  currentModuleVersions = getBinaryContainerByApp($Apps,moduleName)
  if !currentModuleVersions
    return version
  end
  if version.include?"-"
    if currentModuleVersions.include?("#{version}.1.binary")
      recordBinaryPods(moduleName)
      return "#{version}.1.binary"
    end
    if currentModuleVersions.include?("#{version}.1-binary")
      recordBinaryPods(moduleName)
      return "#{version}.1-binary"
    end
  else
    if currentModuleVersions.include?("#{version}.1-binary")
      recordBinaryPods(moduleName)
      return "#{version}.1-binary"
    end
  end

  if currentModuleVersions.include?(version)
    if WarningModules.include?(moduleName)
      return version
    end
    WarningModules << moduleName
    puts "#{colorize("===============================================================================","light red")}"
    puts "#{colorize("Binary Warning:You should not use binary version directly for #{moduleName}","light red")}"
    puts "#{colorize("===============================================================================","light red")}"
    recordBinaryPods(moduleName)
    return version
  end
  if WarningModules.include?(moduleName)
    return version
  end
  WarningModules << moduleName

  puts "#{colorize("===============================================================================","red")}"
  puts "#{colorize("#{moduleName} Binary Warning:Current version:#{version} have no binary version","red")}"
  puts "#{colorize("===============================================================================","red")}"
  return version
end
pod_dev(moduleName,*requirements) click to toggle source
# File lib/bd_pod_extension_net.rb, line 266
def pod_dev(moduleName,*requirements)
  DevPods << {moduleName => requirements}
  EachDevPods << moduleName
end
pod_install_dev() click to toggle source
# File lib/bd_pod_extension_net.rb, line 329
def pod_install_dev
  if $CurrentDevPodsMap
    $CurrentDevPodsMap.each do |hash|
      hash.each { |key,value|
        case value.size
        when 0
          pod key
        when 1
          pod key,value[0]
        when 2
          pod key,value[0],value[1]
        when 3
          pod key,value[0],value[1],value[2]
        when 4
          pod key,value[0],value[1],value[2],value[3]
        end
      }
    end
  end
end
pod_source(moduleName,version=-1,args2=-1,args3=-1,args4=-1) click to toggle source
# File lib/bd_pod_extension_net.rb, line 468
def pod_source(moduleName,version=-1,args2=-1,args3=-1,args4=-1)
  argsment = rebuild_pod(version,args2,args3,args4,moduleName)
  if $NEEDBINARY == 1
    common_pod_command(moduleName,argsment,1)
  else
    common_pod_command(moduleName,argsment,-1)
  end
end
rebuild_pod(version=-1,args2=-1,args3=-1,args4=-1,moduleName) click to toggle source
# File lib/bd_pod_extension_net.rb, line 572
def rebuild_pod(version=-1,args2=-1,args3=-1,args4=-1,moduleName)
  argsment=Array[version,args2,args3,args4]
  return argsment.uniq.reject{ |item|
    if item.class == Hash
      if item.key?(:confuse)
        $Confuse_Pods << moduleName unless $Confuse_Pods.include?(moduleName)
        item.key?(:confuse)
      end
    else
      item == -1
    end
  }
end
recordBinaryPods(moduleName) click to toggle source
# File lib/bd_pod_extension_net.rb, line 645
def recordBinaryPods(moduleName)
  Binary << moduleName;
end
removeDependencyVersion() click to toggle source
# File lib/bd_pod_extension_net.rb, line 254
def removeDependencyVersion()
  $work_dir = Dir.home() + '/.bd_pod_extension_scripts'
  load "#{$work_dir}/swift_spped.rb"
end
showCode!() click to toggle source
# File lib/bd_pod_extension_net.rb, line 237
def showCode!
  $ShowCode_Enable = true
end
show_deprecated(moduleName,deprecated) click to toggle source
# File lib/bd_pod_extension_net.rb, line 431
def show_deprecated(moduleName,deprecated)
  deprecated_time = Time.at deprecated['deTime']
  operate_time = Time.at deprecated['opTime']
  user = deprecated['username']
  version = deprecated['version']
  des = deprecated['des']
  level = deprecated['level']
  case level
  when 'error'
    if Now > deprecated_time.to_i
      system ("osascript -e 'display notification \"废弃理由:#{des},\n 组件废弃时间:#{deprecated_time.inspect} \" with title \"#{moduleName}-#{version} 被废弃\" subtitle \"操作人:#{user}\" '")
      raise "#{moduleName} - #{version} 被废弃,原因为:#{des},操作人:#{user},组件废弃时间:#{deprecated_time.inspect},操作废弃时间:#{operate_time.inspect}"
    end

  when 'warning'
    if Now > deprecated_time.to_i
      system ("osascript -e 'display notification \"废弃理由:#{des},\n 组件废弃时间:#{deprecated_time.inspect} \" with title \"#{moduleName}-#{version} 被废弃\" subtitle \"操作人:#{user}\" '")
      raise "#{moduleName} - #{version} 被废弃,原因为:#{des},操作人:#{user},组件废弃时间:#{deprecated_time.inspect}"
    end
    system ("osascript -e 'display notification \"废弃理由:#{des},\n 组件废弃时间:#{deprecated_time.inspect} \" with title \"#{moduleName}-#{version} 被废弃\" subtitle \"操作人:#{user}\" '")
    puts "#{colorize("===============================================================================","red")}"
    puts "#{colorize("#{moduleName} 将于 #{deprecated_time.inspect} 废弃,废弃理由:#{des},操作人:#{user}","red")}"
    puts "#{colorize("===============================================================================","red")}"
  end


end
startSpeed() click to toggle source
# File lib/bd_pod_extension_net.rb, line 247
def startSpeed()
  $NEEDSPEED = 1
  $work_dir = Dir.home() + '/.bd_pod_extension_scripts'
  $LOAD_PATH << "#{$work_dir}"
  load "oc_spped.rb"
end
subspecHandle(moduleName, argsment) click to toggle source
# File lib/bd_pod_extension_net.rb, line 477
def subspecHandle(moduleName, argsment)
  if moduleName.include?"/"
    subspecArray = moduleName.split("/")
    subspecArray.delete_at(0)
    newsubspecs = subspecArray.join("/")
    if containSubspecComponent(argsment)
      argsment.each do |subspec|
        if subspec.class == Hash
          if subspec.keys.include?(:subspecs)
            subspec[:subspecs] = subspec[:subspecs].map { |e|
              newsubspecs + "/" + e
            }
          end
        end
      end
      return [moduleName.split("/")[0], argsment]
    else
      if argsment.empty?
        argsment = Hash.new
        argsment[:subspecs] = [newsubspecs]
        return [moduleName.split("/")[0], [argsment]]
      end
      subspecComponent = Hash.new
      subspecComponent[:subspecs] = [newsubspecs]
      argsment << subspecComponent
      return [moduleName.split("/")[0], argsment]
    end
  end
  [moduleName, argsment]
end
target_patch(name,options = nil) { || ... } click to toggle source
# File lib/bd_pod_extension_net.rb, line 259
def target_patch(name,options = nil)
  DevPods.clear
  yield if block_given?
  Target_Dev_Pods_Map[name] = DevPods.dup
  Target_Dev_Pod_Container[name] = EachDevPods.dup
end
use_PlaceHoldScript() click to toggle source
# File lib/bd_pod_extentions.rb, line 53
def use_PlaceHoldScript
  $work_dir = $origin
end