framework-generate 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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