class XcodeArchiveCache::Injection::PodsScriptFixer

Attributes

build_settings_interpolator[R]

@return [XcodeArchiveCache::BuildSettings::StringInterpolator]

Public Class Methods

new() click to toggle source
# File lib/injection/pods_script_fixer.rb, line 7
def initialize
  @build_settings_interpolator = XcodeArchiveCache::BuildSettings::StringInterpolator.new
end

Public Instance Methods

fix_copy_resources_script(target, graph, products_dir) click to toggle source

@param [Xcodeproj::Project::Object::PBXNativeTarget] target @param [XcodeArchiveCache::BuildGraph::Graph] graph @param [String] products_dir

# File lib/injection/pods_script_fixer.rb, line 27
def fix_copy_resources_script(target, graph, products_dir)
  build_settings = graph.dependent_build_settings
  file_path = find_copy_resources_script(target, build_settings)
  return unless file_path

  fix_script(file_path, graph, products_dir)
end
fix_embed_frameworks_script(target, graph, products_dir) click to toggle source

@param [Xcodeproj::Project::Object::PBXNativeTarget] target @param [XcodeArchiveCache::BuildGraph::Graph] graph @param [String] products_dir

# File lib/injection/pods_script_fixer.rb, line 15
def fix_embed_frameworks_script(target, graph, products_dir)
  build_settings = graph.dependent_build_settings
  file_path = find_embed_frameworks_script(target, build_settings)
  return unless file_path

  fix_script(file_path, graph, products_dir)
end

Private Instance Methods

find_copy_resources_script(target, build_settings) click to toggle source

@param [Xcodeproj::Project::Object::PBXNativeTarget] target @param [XcodeArchiveCache::BuildSettings::Container] build_settings

@return [String]

# File lib/injection/pods_script_fixer.rb, line 55
def find_copy_resources_script(target, build_settings)
  target.find_script(build_settings_interpolator, build_settings, "[CP] Copy Pods Resources")
end
find_embed_frameworks_script(target, build_settings) click to toggle source

@param [Xcodeproj::Project::Object::PBXNativeTarget] target @param [XcodeArchiveCache::BuildSettings::Container] build_settings

@return [String]

# File lib/injection/pods_script_fixer.rb, line 46
def find_embed_frameworks_script(target, build_settings)
  target.find_script(build_settings_interpolator, build_settings, "[CP] Embed Pods Frameworks")
end
fix_script(file_path, graph, products_dir) click to toggle source

@param [String] file_path @param [XcodeArchiveCache::BuildGraph::Node] graph @param [String] products_dir

# File lib/injection/pods_script_fixer.rb, line 63
def fix_script(file_path, graph, products_dir)
  info("fixing #{file_path}")
  script = File.read(file_path)
  graph.nodes.each do |node|
    relative_product_path = "#{node.native_target.display_name}/#{node.product_file_name}"
    absolute_product_path = File.join(products_dir, relative_product_path)
    script = script.gsub(Regexp.new("\"[^\"]+\/#{node.product_file_name}\""), "\"#{absolute_product_path}\"")
  end

  File.open(file_path, "w") {|file| file.puts(script)}
end