Class: FrameworkGenerate::Project
- Inherits:
-
Object
- Object
- FrameworkGenerate::Project
- Defined in:
- lib/framework-generate/project.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
Returns the value of attribute name.
-
#scripts_directory ⇒ Object
Returns the value of attribute scripts_directory.
-
#targets ⇒ Object
Returns the value of attribute targets.
Instance Method Summary collapse
- #general_build_settings(settings) ⇒ Object
- #generate ⇒ Object
-
#initialize(name = nil, targets = nil, scripts_directory = nil) {|_self| ... } ⇒ Project
constructor
A new instance of Project.
- #ios(version, search_paths = nil) ⇒ Object
-
#macos(version, search_paths = nil) ⇒ Object
sugar.
- #new_language ⇒ Object
- #new_platform ⇒ Object
- #new_script ⇒ Object
-
#new_target ⇒ Object
DSL.
- #objc ⇒ Object
- #project {|_self| ... } ⇒ Object
-
#project_path ⇒ Object
Interface.
- #swift(version) ⇒ Object
- #target_with_name(project, name) ⇒ Object
- #test_build_settings(settings) ⇒ Object
- #to_s ⇒ Object
- #tvos(version, search_paths = nil) ⇒ Object
- #watchos(version, search_paths = nil) ⇒ Object
Constructor Details
#initialize(name = nil, targets = nil, scripts_directory = nil) {|_self| ... } ⇒ Project
Returns a new instance of Project.
7 8 9 10 11 12 13 |
# 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 |
Instance Attribute Details
#name ⇒ Object
Returns the value of attribute name.
5 6 7 |
# File 'lib/framework-generate/project.rb', line 5 def name @name end |
#scripts_directory ⇒ Object
Returns the value of attribute scripts_directory.
5 6 7 |
# File 'lib/framework-generate/project.rb', line 5 def scripts_directory @scripts_directory end |
#targets ⇒ Object
Returns the value of attribute targets.
5 6 7 |
# File 'lib/framework-generate/project.rb', line 5 def targets @targets end |
Instance Method Details
#general_build_settings(settings) ⇒ Object
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# 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 ⇒ Object
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
# 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) ⇒ Object
54 55 56 |
# 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) ⇒ Object
sugar
50 51 52 |
# File 'lib/framework-generate/project.rb', line 50 def macos(version, search_paths = nil) Platform.new(:macos, version, search_paths) end |
#new_language ⇒ Object
37 38 39 40 41 |
# File 'lib/framework-generate/project.rb', line 37 def new_language Language.new do |language| yield(language) end end |
#new_platform ⇒ Object
31 32 33 34 35 |
# File 'lib/framework-generate/project.rb', line 31 def new_platform Platform.new do |platform| yield(platform) end end |
#new_script ⇒ Object
43 44 45 46 47 |
# File 'lib/framework-generate/project.rb', line 43 def new_script Script.new do |script| yield(script) end end |
#new_target ⇒ Object
DSL
25 26 27 28 29 |
# File 'lib/framework-generate/project.rb', line 25 def new_target Target.new do |target| yield(target) end end |
#objc ⇒ Object
70 71 72 |
# File 'lib/framework-generate/project.rb', line 70 def objc Language.new(:objc, nil) end |
#project {|_self| ... } ⇒ Object
15 16 17 18 |
# File 'lib/framework-generate/project.rb', line 15 def project yield(self) if block_given? self end |
#project_path ⇒ Object
Interface
75 76 77 78 79 |
# File 'lib/framework-generate/project.rb', line 75 def project_path return @name if File.extname(@name) == '.xcodeproj' "#{@name}.xcodeproj" end |
#swift(version) ⇒ Object
66 67 68 |
# File 'lib/framework-generate/project.rb', line 66 def swift(version) Language.new(:swift, version) end |
#target_with_name(project, name) ⇒ Object
108 109 110 |
# 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) ⇒ Object
101 102 103 104 105 106 |
# 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 ⇒ Object
20 21 22 |
# File 'lib/framework-generate/project.rb', line 20 def to_s "Project<#{name}, #{targets}>" end |