class FrameworkGenerate::Project
Attributes
name[RW]
scripts_directory[RW]
targets[RW]
Public Class Methods
new(name = nil, targets = nil, scripts_directory = nil) { |self| ... }
click to toggle source
# File lib/framework-generate/project.rb, line 7 def initialize(name = nil, targets = nil, scripts_directory = nil) @name = name @targets = targets @scripts_directory = scripts_directory yield(self) if block_given? end
Public Instance Methods
general_build_settings(settings)
click to toggle source
# File lib/framework-generate/project.rb, line 81 def general_build_settings(settings) settings['SDKROOT'] = 'macosx' settings['TARGETED_DEVICE_FAMILY'] = '1,2,3,4' settings['CODE_SIGN_IDENTITY'] = '' settings['COMBINE_HIDPI_IMAGES'] = 'YES' settings['SWIFT_OPTIMIZATION_LEVEL'] = '-Owholemodule' settings['CLANG_WARN_INFINITE_RECURSION'] = 'YES' settings['CLANG_WARN_SUSPICIOUS_MOVE'] = 'YES' settings['ENABLE_STRICT_OBJC_MSGSEND'] = 'YES' settings['GCC_NO_COMMON_BLOCKS'] = 'YES' settings['CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING'] = 'YES' settings['CLANG_WARN_COMMA'] = 'YES' settings['CLANG_WARN_NON_LITERAL_NULL_CONVERSION'] = 'YES' settings['CLANG_WARN_OBJC_LITERAL_CONVERSION'] = 'YES' settings['CLANG_WARN_RANGE_LOOP_ANALYSIS'] = 'YES' settings['CLANG_WARN_STRICT_PROTOTYPES'] = 'YES' settings end
generate()
click to toggle source
# File lib/framework-generate/project.rb, line 112 def generate project = Xcodeproj::Project.new(project_path) schemes_dir = Xcodeproj::XCScheme.user_data_dir(project.path) FileUtils.rm_rf(schemes_dir) FileUtils.mkdir_p(schemes_dir) xcschememanagement = {} xcschememanagement['SchemeUserState'] = {} xcschememanagement['SuppressBuildableAutocreation'] = {} project.build_configurations.each do |configuration| general_build_settings(configuration.build_settings) end @targets.each do |target| target.create(project, target.language, @scripts_directory) end @targets.each do |target| scheme = Xcodeproj::XCScheme.new created_target = target_with_name(project, target.name) scheme.add_build_target(created_target) unless scheme.launch_action.nil? target.add_launch_arguments(scheme.launch_action) target.add_environment_variables(scheme.launch_action) end if created_target.test_target_type? scheme.add_test_target(created_target) end unless target.test_target.nil? created_test_target = target_with_name(project, target.test_target.name) created_test_target.add_dependency(created_target) scheme.add_test_target(created_test_target) end unless scheme.test_action.nil? scheme.test_action.code_coverage_enabled = target.enable_code_coverage end scheme.save_as(project.path, target.name, true) xcschememanagement['SchemeUserState']["#{target.name}.xcscheme"] = {} xcschememanagement['SchemeUserState']["#{target.name}.xcscheme"]['isShown'] = true end project.native_targets.each do |target| next unless target.test_target_type? target.build_configurations.each do |configuration| test_build_settings(configuration.build_settings) end end xcschememanagement_path = schemes_dir + 'xcschememanagement.plist' Xcodeproj::Plist.write_to_path(xcschememanagement, xcschememanagement_path) project.save puts "Successfully generated #{project_path}" end
ios(version, search_paths = nil)
click to toggle source
# File lib/framework-generate/project.rb, line 54 def ios(version, search_paths = nil) Platform.new(:ios, version, search_paths) end
macos(version, search_paths = nil)
click to toggle source
sugar
# File lib/framework-generate/project.rb, line 50 def macos(version, search_paths = nil) Platform.new(:macos, version, search_paths) end
new_language() { |language| ... }
click to toggle source
# File lib/framework-generate/project.rb, line 37 def new_language Language.new do |language| yield(language) end end
new_platform() { |platform| ... }
click to toggle source
# File lib/framework-generate/project.rb, line 31 def new_platform Platform.new do |platform| yield(platform) end end
new_script() { |script| ... }
click to toggle source
# File lib/framework-generate/project.rb, line 43 def new_script Script.new do |script| yield(script) end end
new_target() { |target| ... }
click to toggle source
DSL
# File lib/framework-generate/project.rb, line 25 def new_target Target.new do |target| yield(target) end end
objc()
click to toggle source
# File lib/framework-generate/project.rb, line 70 def objc Language.new(:objc, nil) end
project() { |self| ... }
click to toggle source
# File lib/framework-generate/project.rb, line 15 def project yield(self) if block_given? self end
project_path()
click to toggle source
Interface
# File lib/framework-generate/project.rb, line 75 def project_path return @name if File.extname(@name) == '.xcodeproj' "#{@name}.xcodeproj" end
swift(version)
click to toggle source
# File lib/framework-generate/project.rb, line 66 def swift(version) Language.new(:swift, version) end
target_with_name(project, name)
click to toggle source
# File lib/framework-generate/project.rb, line 108 def target_with_name(project, name) project.native_targets.detect { |e| e.name == name } end
test_build_settings(settings)
click to toggle source
# File lib/framework-generate/project.rb, line 101 def test_build_settings(settings) settings['LD_RUNPATH_SEARCH_PATHS'] = '$(inherited) @executable_path/Frameworks @loader_path/Frameworks' settings['LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]'] = '$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks' settings end
to_s()
click to toggle source
# File lib/framework-generate/project.rb, line 20 def to_s "Project<#{name}, #{targets}>" end
tvos(version, search_paths = nil)
click to toggle source
# File lib/framework-generate/project.rb, line 58 def tvos(version, search_paths = nil) Platform.new(:tvos, version, search_paths) end
watchos(version, search_paths = nil)
click to toggle source
# File lib/framework-generate/project.rb, line 62 def watchos(version, search_paths = nil) Platform.new(:watchos, version, search_paths) end