class PodAlexandria::XcodeGen
Public Class Methods
cleanupRome()
click to toggle source
# File lib/cocoapods-alexandria/xcodegen/xcodegen.rb, line 3 def self.cleanupRome FileUtils.remove_dir('build', force: true) FileUtils.remove_dir('dSYM', force: true) FileUtils.remove_dir('Rome', force: true) end
clearDependencies(xcodegen_dependencies_file)
click to toggle source
# File lib/cocoapods-alexandria/xcodegen/xcodegen.rb, line 9 def self.clearDependencies(xcodegen_dependencies_file) File.truncate(xcodegen_dependencies_file, 0) end
generate()
click to toggle source
# File lib/cocoapods-alexandria/xcodegen/xcodegen.rb, line 13 def self.generate unless system('which xcodegen > /dev/null') abort 'XcodeGen is not installed. Visit https://github.com/yonaskolb/XcodeGen to learn more.' end system('xcodegen') end
generate_dependencies(installer_context, options)
click to toggle source
Generate the project dependencies file, adding frameworks to the right targets and also checking if they are linked dynamically or not.
# File lib/cocoapods-alexandria/xcodegen/dependencies_generator.rb, line 7 def self.generate_dependencies(installer_context, options) targets = installer_context.umbrella_targets.map { |target| generate_for_target(installer_context, target, options.environment_configs_for(target.cocoapods_target_label)) }.to_h File.open(options.xcodegen_dependencies_file, 'w') { |file| YAML::dump({ 'targets' => targets }, file) } end
Private Class Methods
config_file_for_target(installer_context, target)
click to toggle source
# File lib/cocoapods-alexandria/xcodegen/dependencies_generator.rb, line 32 def self.config_file_for_target(installer_context, target) Dir["#{installer_context.sandbox_root}/Target Support Files/#{target.cocoapods_target_label}/#{target.cocoapods_target_label}.*.xcconfig"] .first end
generate_for_target(installer_context, target, configurations)
click to toggle source
# File lib/cocoapods-alexandria/xcodegen/dependencies_generator.rb, line 19 def self.generate_for_target(installer_context, target, configurations) target_name = target.cocoapods_target_label.sub(/^Pods-/, '') xcconfig = config_file_for_target(installer_context, target) [ target_name, { 'configFiles' => configurations, 'dependencies' => get_dependencies_from_xcconfig(xcconfig).map(&:xcodegen_info) } ] end
get_dependencies_from_xcconfig(file)
click to toggle source
# File lib/cocoapods-alexandria/xcodegen/dependencies_generator.rb, line 37 def self.get_dependencies_from_xcconfig(file) File.readlines(file).select { |line| line.start_with?('OTHER_LDFLAGS') }.first &.split('=')&.at(1)&.tr('"', '') # get value (and remove quotes) &.gsub('-framework ', '-f')&.gsub('-weak_framework ', '-wf') # replace framework with fake linker flag &.gsub('-ObjC', '') # remove unneeded flags &.split&.drop(1) # remove inherited &.map { |d| Dependency.new(d) } || [] end