framework-generate 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1a1f81cf334acb873df9c312586d80bc5e6d2461
4
- data.tar.gz: c1e95eab5f0b18ced214c7cf8d24dbaea778a1a1
3
+ metadata.gz: 3352d76542ce29f95a8bb5a5f8fe901d95437551
4
+ data.tar.gz: '08b648f80dad19a6d78bc8175b169d566e26f98a'
5
5
  SHA512:
6
- metadata.gz: 7c0e028ce6f3ebd0fa9feca17391a40731f29e175fcd7b2db52f8f26b1b0ad9947b884cefb81c89dee8552967101977c7902ddc1d75a14d04fad94665ad5d3da
7
- data.tar.gz: b6471b8e21ffb0f457883bb3320591eacd663a4aab2a1d52e5378b3ac9526b512b4a30e175575a1d62a08fbac0b7ccaa3b6dc7d70009430610189d98c493e1c8
6
+ metadata.gz: e6e0333bedeea1689a55d1be0cd460b9e32b0ce265f8a09a4d13fe33319d929429b4b8a0b290386fdb437a1105a27a85f37bc89568aa4252c270cd9ba557bc33
7
+ data.tar.gz: fa17ccdc4bbb3e3efeaae96702ad2e202bb04c05be803f6ac5995ac7fbadb041d19134d22b892fa87699f33d669d3b8d55630e63e918dda92d42372420dfcf7e
data/README.md CHANGED
@@ -1,4 +1,7 @@
1
1
  # framework-generate
2
+ [![Gem Version](https://badge.fury.io/rb/framework-generate.svg)](https://badge.fury.io/rb/framework-generate)
3
+ [![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](LICENSE)
4
+
2
5
  Simple tool to help generate a [multiplatform, single-scheme Xcode project](http://promisekit.org/news/2016/08/Multiplatform-Single-Scheme-Xcode-Projects/).
3
6
 
4
7
  ## Installation
@@ -21,6 +24,44 @@ framework-generate
21
24
 
22
25
  To view the full `FrameworkSpec` documentation see the [`docs`](docs/FrameworkSpec.md) folder.
23
26
 
27
+ ## Contributing
28
+
29
+ Love framework-generate but want to make it even better?
30
+
31
+ Open source isn't just writing code. We could use your help with any of the
32
+ following:
33
+
34
+ - Finding (and reporting!) bugs.
35
+ - New feature suggestions.
36
+ - Answering questions on issues.
37
+ - Documentation improvements.
38
+ - Reviewing pull requests.
39
+ - Helping to manage issue priorities.
40
+ - Fixing bugs/new features.
41
+
42
+ If any of that sounds cool to you, send a pull request! After a few
43
+ contributions, we'll add you as an admin to the repo so you can merge pull
44
+ requests and help build framework-generate.
45
+
46
+ Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by [its terms](CODE_OF_CONDUCT.md).
47
+
48
+ ### How to contribute
49
+
50
+ Contributing is easy but you will need to have bundler installed. If you don't it can be installed using:
51
+
52
+ ```bash
53
+ [sudo] gem install bundler
54
+ ```
55
+
56
+ When you have bundler installed, simply make your changes to the tool and then try it out using:
57
+
58
+ ```bash
59
+ bundle install
60
+ bundle exec framework-generate
61
+ ```
62
+
63
+ Once your change is good to go open up a pull request!
64
+
24
65
  ## License
25
66
 
26
67
  This project is licensed under the terms of the MIT license. See the [LICENSE](LICENSE) file.
@@ -2,4 +2,4 @@
2
2
 
3
3
  require 'framework-generate'
4
4
 
5
- FrameworkGenerate::Runner.generate
5
+ FrameworkGenerate::Runner.generate
@@ -1,14 +1,12 @@
1
- project.name = #PROJECT_NAME#
2
- project.language = swift("3.0")
3
- project.platforms = [
1
+ target = new_target do |target|
2
+ target.name = #TARGET_NAME#
3
+ target.language = swift("3.0")
4
+ target.platforms = [
4
5
  macos("10.11"),
5
6
  ios("8.0"),
6
7
  tvos("9.0"),
7
8
  watchos("2.0")
8
- ]
9
-
10
- target = new_target do |target|
11
- target.name = #TARGET_NAME#
9
+ ]
12
10
  target.info_plist = #TARGET_INFO_PLIST#
13
11
  target.bundle_id = #TARGET_BUNDLE_ID#
14
12
  target.include_files = [
@@ -16,6 +14,7 @@ target = new_target do |target|
16
14
  ]
17
15
  end
18
16
 
17
+ project.name = #PROJECT_NAME#
19
18
  project.targets = [
20
19
  target
21
20
  ]
@@ -5,7 +5,7 @@ module FrameworkGenerate
5
5
  def initialize(type = nil, minimum_version = nil, search_paths = nil)
6
6
  @type = type
7
7
  @minimum_version = minimum_version
8
- @search_paths = search_paths == nil ? default_search_paths : search_paths
8
+ @search_paths = search_paths.nil? ? default_search_paths : search_paths
9
9
 
10
10
  yield(self) if block_given?
11
11
  end
@@ -16,21 +16,21 @@ module FrameworkGenerate
16
16
 
17
17
  def self.supported_platforms(platforms, is_test_target = false)
18
18
  platforms
19
- .reject { |platform| is_test_target && platform.type == :watchos }
20
- .map { |platform| platform.raw_values }
21
- .join(' ')
19
+ .reject { |platform| is_test_target && platform.type == :watchos }
20
+ .map(&:raw_values)
21
+ .join(' ')
22
22
  end
23
23
 
24
24
  def self.find_platform(platforms, type)
25
25
  platforms.find { |platform| platform.type == type }
26
26
  end
27
27
 
28
- def self.deployment_target(platforms, type)
29
- find_platform(platforms, type).minimum_version
28
+ def self.deployment_target(platform)
29
+ platform.minimum_version
30
30
  end
31
31
 
32
- def self.search_paths(platforms, type)
33
- find_platform(platforms, type).search_paths
32
+ def self.search_paths(platform)
33
+ platform.search_paths
34
34
  end
35
35
 
36
36
  def raw_values
@@ -22,27 +22,27 @@ module FrameworkGenerate
22
22
  end
23
23
 
24
24
  # DSL
25
- def new_target(&block)
25
+ def new_target
26
26
  Target.new do |target|
27
- block.call(target)
27
+ yield(target)
28
28
  end
29
29
  end
30
30
 
31
- def new_platform(&block)
31
+ def new_platform
32
32
  Platform.new do |platform|
33
- block.call(platform)
33
+ yield(platform)
34
34
  end
35
35
  end
36
36
 
37
- def new_language(&block)
37
+ def new_language
38
38
  Language.new do |language|
39
- block.call(language)
39
+ yield(language)
40
40
  end
41
41
  end
42
-
43
- def new_script(&block)
42
+
43
+ def new_script
44
44
  Script.new do |script|
45
- block.call(script)
45
+ yield(script)
46
46
  end
47
47
  end
48
48
 
@@ -73,9 +73,7 @@ module FrameworkGenerate
73
73
 
74
74
  # Interface
75
75
  def project_path
76
- if File.extname(@name) == '.xcodeproj'
77
- return @name
78
- end
76
+ return @name if File.extname(@name) == '.xcodeproj'
79
77
 
80
78
  "#{@name}.xcodeproj"
81
79
  end
@@ -101,12 +99,11 @@ module FrameworkGenerate
101
99
  settings
102
100
  end
103
101
 
104
- def target_with_name(project, name)
105
- project.native_targets.detect { |e| e.name == name }
102
+ def target_with_name(project, name)
103
+ project.native_targets.detect { |e| e.name == name }
106
104
  end
107
105
 
108
106
  def generate
109
-
110
107
  project = Xcodeproj::Project.new(project_path)
111
108
 
112
109
  schemes_dir = Xcodeproj::XCScheme.user_data_dir(project.path)
@@ -151,7 +148,6 @@ module FrameworkGenerate
151
148
  scheme.save_as(project.path, target.name, true)
152
149
  xcschememanagement['SchemeUserState']["#{target.name}.xcscheme"] = {}
153
150
  xcschememanagement['SchemeUserState']["#{target.name}.xcscheme"]['isShown'] = true
154
-
155
151
  end
156
152
 
157
153
  project.native_targets.each do |target|
@@ -168,6 +164,5 @@ module FrameworkGenerate
168
164
 
169
165
  puts "Successfully generated #{project_path}"
170
166
  end
171
-
172
167
  end
173
168
  end
@@ -34,16 +34,33 @@ module FrameworkGenerate
34
34
 
35
35
  settings['INFOPLIST_FILE'] = @info_plist
36
36
  settings['PRODUCT_BUNDLE_IDENTIFIER'] = @bundle_id
37
- settings['APPLICATION_EXTENSION_API_ONLY'] = @is_safe_for_extensions ? 'YES' : 'NO';
38
- settings['SUPPORTED_PLATFORMS'] = FrameworkGenerate::Platform::supported_platforms(@platforms)
39
- settings['MACOSX_DEPLOYMENT_TARGET'] = FrameworkGenerate::Platform::deployment_target(@platforms, :macos)
40
- settings['IPHONEOS_DEPLOYMENT_TARGET'] = FrameworkGenerate::Platform::deployment_target(@platforms, :ios)
41
- settings['TVOS_DEPLOYMENT_TARGET'] = FrameworkGenerate::Platform::deployment_target(@platforms, :tvos)
42
- settings['WATCHOS_DEPLOYMENT_TARGET'] = FrameworkGenerate::Platform::deployment_target(@platforms, :watchos)
43
- settings['FRAMEWORK_SEARCH_PATHS[sdk=macosx*]'] = FrameworkGenerate::Platform::search_paths(@platforms, :macos)
44
- settings['FRAMEWORK_SEARCH_PATHS[sdk=iphone*]'] = FrameworkGenerate::Platform::search_paths(@platforms, :ios)
45
- settings['FRAMEWORK_SEARCH_PATHS[sdk=appletv*]'] = FrameworkGenerate::Platform::search_paths(@platforms, :tvos)
46
- settings['FRAMEWORK_SEARCH_PATHS[sdk=watch*]'] = FrameworkGenerate::Platform::search_paths(@platforms, :watchos)
37
+ settings['APPLICATION_EXTENSION_API_ONLY'] = @is_safe_for_extensions ? 'YES' : 'NO'
38
+ settings['SUPPORTED_PLATFORMS'] = FrameworkGenerate::Platform.supported_platforms(@platforms)
39
+
40
+ macos = FrameworkGenerate::Platform.find_platform(@platforms, :macos)
41
+ unless macos.nil?
42
+ settings['MACOSX_DEPLOYMENT_TARGET'] = FrameworkGenerate::Platform.deployment_target(macos)
43
+ settings['FRAMEWORK_SEARCH_PATHS[sdk=macosx*]'] = FrameworkGenerate::Platform.search_paths(macos)
44
+ end
45
+
46
+ ios = FrameworkGenerate::Platform.find_platform(@platforms, :ios)
47
+ unless ios.nil?
48
+ settings['IPHONEOS_DEPLOYMENT_TARGET'] = FrameworkGenerate::Platform.deployment_target(ios)
49
+ settings['FRAMEWORK_SEARCH_PATHS[sdk=iphone*]'] = FrameworkGenerate::Platform.search_paths(ios)
50
+ end
51
+
52
+ watchos = FrameworkGenerate::Platform.find_platform(@platforms, :watchos)
53
+ unless watchos.nil?
54
+ settings['WATCHOS_DEPLOYMENT_TARGET'] = FrameworkGenerate::Platform.deployment_target(watchos)
55
+ settings['FRAMEWORK_SEARCH_PATHS[sdk=watch*]'] = FrameworkGenerate::Platform.search_paths(watchos)
56
+ end
57
+
58
+ tvos = FrameworkGenerate::Platform.find_platform(@platforms, :tvos)
59
+ unless tvos.nil?
60
+ settings['TVOS_DEPLOYMENT_TARGET'] = FrameworkGenerate::Platform.deployment_target(tvos)
61
+ settings['FRAMEWORK_SEARCH_PATHS[sdk=appletv*]'] = FrameworkGenerate::Platform.search_paths(tvos)
62
+ end
63
+
47
64
  settings['SWIFT_VERSION'] = @language.version
48
65
 
49
66
  settings
@@ -55,7 +72,7 @@ module FrameworkGenerate
55
72
  end
56
73
 
57
74
  def add_framework_header(project, target)
58
- return unless @header != nil
75
+ return if @header.nil?
59
76
  header_path = @header
60
77
  header_file_group = find_group(project, header_path)
61
78
  header_file = header_file_group.new_reference(header_path)
@@ -89,13 +106,13 @@ module FrameworkGenerate
89
106
  end
90
107
 
91
108
  def add_source_files(project, target)
92
- if @exclude_files == nil
93
- exclude_files = []
94
- else
95
- exclude_files = @exclude_files.map do |files|
96
- Dir[files]
97
- end
98
- end
109
+ exclude_files = if @exclude_files.nil?
110
+ []
111
+ else
112
+ @exclude_files.map do |files|
113
+ Dir[files]
114
+ end
115
+ end
99
116
 
100
117
  source_files = @include_files.map do |files|
101
118
  Dir[files].reject do |path|
@@ -116,15 +133,13 @@ module FrameworkGenerate
116
133
  end
117
134
 
118
135
  def append_framework_extension(framework)
119
- if File.extname(framework) == '.framework'
120
- return framework
121
- end
136
+ return framework if File.extname(framework) == '.framework'
122
137
 
123
138
  "#{framework}.framework"
124
139
  end
125
140
 
126
141
  def add_dependencies(project, target)
127
- return unless @dependencies != nil
142
+ return if @dependencies.nil?
128
143
 
129
144
  dependency_names = @dependencies.map do |dependency|
130
145
  append_framework_extension(dependency)
@@ -156,21 +171,19 @@ module FrameworkGenerate
156
171
  else
157
172
  script_path = File.join(Dir.pwd, scripts_directory, script_file_name)
158
173
  dirname = File.dirname(script_path)
159
- unless File.directory?(dirname)
160
- FileUtils.mkdir_p(dirname)
161
- end
174
+ FileUtils.mkdir_p(dirname) unless File.directory?(dirname)
162
175
 
163
- FileUtils.cp(script_file_path, script_path, { :preserve => true })
176
+ FileUtils.cp(script_file_path, script_path, preserve: true)
164
177
 
165
- xcode_path = File.join("${SRCROOT}", scripts_directory, script_file_name)
178
+ xcode_path = File.join('${SRCROOT}', scripts_directory, script_file_name)
166
179
  build_phase.shell_script = " exec \"#{xcode_path}\""
167
180
  end
168
-
181
+
169
182
  add_framework_to_copy_phase(project, build_phase)
170
183
  end
171
184
 
172
185
  def add_framework_to_copy_phase(project, build_phase)
173
- return unless @dependencies != nil
186
+ return if @dependencies.nil?
174
187
 
175
188
  dependency_names = @dependencies.map do |dependency|
176
189
  append_framework_extension(dependency)
@@ -186,7 +199,7 @@ module FrameworkGenerate
186
199
  end
187
200
 
188
201
  def add_resource_files(project, target)
189
- return unless @resource_files != nil
202
+ return if @resource_files.nil?
190
203
 
191
204
  files = @resource_files.map do |files|
192
205
  Dir[files]
@@ -205,9 +218,9 @@ module FrameworkGenerate
205
218
  end
206
219
 
207
220
  def add_build_scripts(target, scripts)
208
- return unless scripts != nil
221
+ return if scripts.nil?
209
222
 
210
- scripts.each do |script|
223
+ scripts.each do |script|
211
224
  build_phase = target.new_shell_script_build_phase(script.name)
212
225
  build_phase.shell_script = script.script
213
226
  build_phase.input_paths = script.inputs
@@ -217,11 +230,11 @@ module FrameworkGenerate
217
230
  def add_pre_build_scripts(target)
218
231
  add_build_scripts(target, @pre_build_scripts)
219
232
  end
220
-
233
+
221
234
  def add_post_build_scripts(target)
222
235
  add_build_scripts(target, @post_build_scripts)
223
236
  end
224
-
237
+
225
238
  def create(project, language, scripts_directory)
226
239
  name = @name
227
240
  type = @type
@@ -252,7 +265,7 @@ module FrameworkGenerate
252
265
 
253
266
  target.build_phases << project.new(Xcodeproj::Project::Object::PBXResourcesBuildPhase)
254
267
  target.build_phases << project.new(Xcodeproj::Project::Object::PBXFrameworksBuildPhase)
255
-
268
+
256
269
  # Post build script
257
270
  add_post_build_scripts(target)
258
271
 
@@ -9,14 +9,14 @@ module FrameworkGenerate
9
9
  puts "Couldn't find FrameworkSpec. Do you want to create one? [Y/N]"
10
10
  create_file = gets.chomp
11
11
 
12
- if create_file == "Y"
12
+ if create_file.casecmp('Y').zero?
13
13
  sample_framework_spec = File.join(File.dirname(__FILE__), 'SampleFrameworkSpec')
14
14
 
15
15
  FileUtils.cp(sample_framework_spec, file_path)
16
16
 
17
- abort "Created a FrameworkSpec. Update the contents of the FrameworkSpec file and rerun the command"
17
+ abort 'Created a FrameworkSpec. Update the contents of the FrameworkSpec file and rerun the command'
18
18
  elsif
19
- abort "Cannot create a project without a FrameworkSpec"
19
+ abort 'Cannot create a project without a FrameworkSpec'
20
20
  end
21
21
  end
22
22
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: framework-generate
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pierre-Marc Airoldi
@@ -69,7 +69,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
69
69
  version: '0'
70
70
  requirements: []
71
71
  rubyforge_project:
72
- rubygems_version: 2.5.1
72
+ rubygems_version: 2.6.12
73
73
  signing_key:
74
74
  specification_version: 4
75
75
  summary: Tool to generate an Xcode framework project