Module: Pod::Installer::Xcode::PodsProjectGenerator::TargetInstallerHelper

Included in:
AppHostInstaller, TargetInstaller
Defined in:
lib/cocoapods/installer/xcode/pods_project_generator/target_installer_helper.rb

Class Method Summary collapse

Class Method Details

.create_info_plist_file_with_sandbox(sandbox, path, native_target, version, platform, bundle_package_type = :fmwk, additional_entries: {}) ⇒ void

This method returns an undefined value.

Creates the Info.plist file which sets public framework attributes

@param [Hash] additional_entries
       any additional entries to include in this Info.plist file.

Parameters:

  • sandbox (Sandbox)

    @see #sandbox The sandbox where the generated Info.plist file should be saved.

  • path (Pathname)

    the path to save the generated Info.plist file.

  • native_target (PBXNativeTarget)

    the native target to link the generated Info.plist file into.

  • version (String)

    the version to use for when generating this Info.plist file.

  • platform (Platform)

    the platform to use for when generating this Info.plist file.

  • bundle_package_type (Symbol) (defaults to: :fmwk)

    the CFBundlePackageType of the target this Info.plist file is for.


53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/cocoapods/installer/xcode/pods_project_generator/target_installer_helper.rb', line 53

def create_info_plist_file_with_sandbox(sandbox, path, native_target, version, platform,
                                        bundle_package_type = :fmwk, additional_entries: {})
  UI.message "- Generating Info.plist file at #{UI.path(path)}" do
    generator = Generator::InfoPlistFile.new(version, platform, bundle_package_type, additional_entries)
    update_changed_file(generator, path)

    relative_path_string = path.relative_path_from(sandbox.root).to_s
    native_target.build_configurations.each do |c|
      c.build_settings['INFOPLIST_FILE'] = relative_path_string
    end
  end
end

.create_prefix_header(path, file_accessors, platform, native_target, project_directory) ⇒ void

This method returns an undefined value.

Creates a prefix header file which imports `UIKit` or `Cocoa` according to the platform of the target. This file also include any prefix header content reported by the specification of the pods.

Parameters:

  • path (Pathname)

    the path to generate the prefix header for.

  • file_accessors (Array<Sandbox::FileAccessor>)

    the file accessors to use for this prefix header that point to a path of a prefix header.

  • platform (Platform)

    the platform to use for this prefix header.

  • native_target (PBXNativeTarget)

    the native target on which the prefix header should be configured for.

  • project_directory (Pathname)

    the directory containing the project of the target


87
88
89
90
91
92
93
94
95
# File 'lib/cocoapods/installer/xcode/pods_project_generator/target_installer_helper.rb', line 87

def create_prefix_header(path, file_accessors, platform, native_target, project_directory)
  generator = Generator::PrefixHeader.new(file_accessors, platform)
  update_changed_file(generator, path)

  relative_path = path.relative_path_from(project_directory).to_s
  native_target.build_configurations.each do |c|
    c.build_settings['GCC_PREFIX_HEADER'] = relative_path
  end
end

.update_changed_file(generator, path) ⇒ Object

Saves the content the provided path unless the path exists and the contents are exactly the same.

Parameters:

  • generator (Generator)

    the generator to use for generating the content.

  • path (Pathname)

    the pathname to save the content into.


14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/cocoapods/installer/xcode/pods_project_generator/target_installer_helper.rb', line 14

def update_changed_file(generator, path)
  if path.exist?
    contents = generator.generate.to_s
    content_stream = StringIO.new(contents)
    identical = File.open(path, 'rb') { |f| FileUtils.compare_stream(f, content_stream) }
    return if identical

    File.open(path, 'w') { |f| f.write(contents) }
  else
    path.dirname.mkpath
    generator.save_as(path)
  end
end