xcake 0.8.3 → 0.8.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/lib/xcake/version.rb +1 -1
  4. data/xcake.gemspec +1 -1
  5. metadata +1 -35
  6. data/docs/Cakefile.md +0 -509
  7. data/docs/Getting Started.md +0 -65
  8. data/docs/Hooks.md +0 -14
  9. data/docs/Xcode Project Support.md +0 -51
  10. data/example/app/CakeMania/CakeMania.xcodeproj/project.pbxproj +0 -973
  11. data/example/app/CakeMania/CakeMania.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  12. data/example/app/CakeMania/CakeMania.xcodeproj/project.xcworkspace/xcuserdata/maxim.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  13. data/example/app/CakeMania/CakeMania.xcodeproj/xcshareddata/xcschemes/CakeMania-AppStore.xcscheme +0 -91
  14. data/example/app/CakeMania/CakeMania.xcodeproj/xcshareddata/xcschemes/CakeMania-Debug.xcscheme +0 -91
  15. data/example/app/CakeMania/CakeMania.xcodeproj/xcshareddata/xcschemes/CakeMania-Production.xcscheme +0 -91
  16. data/example/app/CakeMania/CakeMania.xcodeproj/xcshareddata/xcschemes/CakeMania-RC.xcscheme +0 -91
  17. data/example/app/CakeMania/CakeMania.xcodeproj/xcshareddata/xcschemes/CakeMania-Staging.xcscheme +0 -91
  18. data/example/app/CakeMania/CakeMania.xcodeproj/xcuserdata/maxim.xcuserdatad/xcschemes/CakeManiaTst.xcscheme +0 -56
  19. data/example/app/CakeMania/CakeMania.xcodeproj/xcuserdata/maxim.xcuserdatad/xcschemes/CakeManiaUITst.xcscheme +0 -56
  20. data/example/app/CakeMania/CakeMania.xcodeproj/xcuserdata/maxim.xcuserdatad/xcschemes/xcschememanagement.plist +0 -72
  21. data/example/app/CakeMania/Cakefile +0 -398
  22. data/example/app/CakeMania/Info/CakeMania.plist +0 -38
  23. data/example/app/CakeMania/Info/CakeManiaTst.plist +0 -22
  24. data/example/app/CakeMania/Info/CakeManiaUITst.plist +0 -22
  25. data/example/app/CakeMania/Res/CakeMania-test.entitlements +0 -10
  26. data/example/app/CakeMania/Res/CakeMania.entitlements +0 -10
  27. data/example/app/CakeMania/Res/CakeMania.xcassets/AppIcon.appiconset/Contents.json +0 -48
  28. data/example/app/CakeMania/Src/AppDelegate.swift +0 -46
  29. data/example/app/CakeMania/Src/Base.lproj/LaunchScreen.storyboard +0 -27
  30. data/example/app/CakeMania/Src/Base.lproj/Main.storyboard +0 -26
  31. data/example/app/CakeMania/Src/ObjC/CakeMania-Bridging-Header.h +0 -3
  32. data/example/app/CakeMania/Src/ObjC/Prefix.pch +0 -14
  33. data/example/app/CakeMania/Src/ViewController.swift +0 -25
  34. data/example/app/CakeMania/Tst/Main.swift +0 -36
  35. data/example/app/CakeMania/UITst/Main.swift +0 -36
  36. data/example/framework/Cakefile +0 -133
  37. data/gemfiles/Gemfile.xcodeproj-1.3.x +0 -5
  38. data/gemfiles/Gemfile.xcodeproj-1.4.x +0 -5
  39. data/gemfiles/Gemfile.xcodeproj-edge +0 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 42ae2cb0e62db43dbf402e090668547cf1ad55cb
4
- data.tar.gz: 94b0c1b5d847c324c196119da602212298340c5f
3
+ metadata.gz: 5f39de7bfa89b96bd1a3708488d2e1e658dd438e
4
+ data.tar.gz: 4fcd070e3ddc8e2e276adc8e17649752efd1269c
5
5
  SHA512:
6
- metadata.gz: 9dd1fb970e81a2de306c6444c4272c4632024bc13aa71593d2c31f097fe72c86caa05850369bfcf3b89ee75f6a00a976e176d4f90ef5773e55a8a2cb6219b995
7
- data.tar.gz: 6ad5fca8fd6207c0eae412554202a759493c1b21e8b9ddf48846a5da35443395a1cc975e79bf92958e62fc8d774a7e02114c0b25696093afe14dc63208822455
6
+ metadata.gz: 333ded28cd7b249d64ada8eb9e682e644bb240f9a34fa507b936e9562d168d3c7460aea2d578c5dde4a234dd5824e40db590fdb2828fa63c3659700d7ca54697
7
+ data.tar.gz: e18c3f87bf41e66205a3bf045c9250d9e46af0c48a267ed9bd625111ed3d59b5869bfb62ab14ccdfceafb8ca70e66f9ce15fb877c59f23b0adf0007f80a0c58f
@@ -1,3 +1,11 @@
1
+ v0.8.5 & v0.8.6
2
+ ===============
3
+ - Fixes gem failing to load.
4
+
5
+ v0.8.4
6
+ ======
7
+ - Reduces gem size.
8
+
1
9
  v0.8.3
2
10
  ======
3
11
  - Fixes bug with scheme generator when configuring unit tests for schemes.
@@ -1,3 +1,3 @@
1
1
  module Xcake
2
- VERSION = '0.8.3'.freeze
2
+ VERSION = '0.8.6'.freeze
3
3
  end
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
14
14
  spec.homepage = 'https://github.com/jcampbell05/xcake/'
15
15
  spec.license = 'MIT'
16
16
 
17
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|example|docs|gemfiles)/}) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.executables = %w(xcake)
20
20
  spec.require_paths = ['lib']
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xcake
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.3
4
+ version: 0.8.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Campbell
@@ -213,37 +213,6 @@ files:
213
213
  - bin/console
214
214
  - bin/setup
215
215
  - bin/xcake
216
- - docs/Cakefile.md
217
- - docs/Getting Started.md
218
- - docs/Hooks.md
219
- - docs/Xcode Project Support.md
220
- - example/app/CakeMania/CakeMania.xcodeproj/project.pbxproj
221
- - example/app/CakeMania/CakeMania.xcodeproj/project.xcworkspace/contents.xcworkspacedata
222
- - example/app/CakeMania/CakeMania.xcodeproj/project.xcworkspace/xcuserdata/maxim.xcuserdatad/UserInterfaceState.xcuserstate
223
- - example/app/CakeMania/CakeMania.xcodeproj/xcshareddata/xcschemes/CakeMania-AppStore.xcscheme
224
- - example/app/CakeMania/CakeMania.xcodeproj/xcshareddata/xcschemes/CakeMania-Debug.xcscheme
225
- - example/app/CakeMania/CakeMania.xcodeproj/xcshareddata/xcschemes/CakeMania-Production.xcscheme
226
- - example/app/CakeMania/CakeMania.xcodeproj/xcshareddata/xcschemes/CakeMania-RC.xcscheme
227
- - example/app/CakeMania/CakeMania.xcodeproj/xcshareddata/xcschemes/CakeMania-Staging.xcscheme
228
- - example/app/CakeMania/CakeMania.xcodeproj/xcuserdata/maxim.xcuserdatad/xcschemes/CakeManiaTst.xcscheme
229
- - example/app/CakeMania/CakeMania.xcodeproj/xcuserdata/maxim.xcuserdatad/xcschemes/CakeManiaUITst.xcscheme
230
- - example/app/CakeMania/CakeMania.xcodeproj/xcuserdata/maxim.xcuserdatad/xcschemes/xcschememanagement.plist
231
- - example/app/CakeMania/Cakefile
232
- - example/app/CakeMania/Info/CakeMania.plist
233
- - example/app/CakeMania/Info/CakeManiaTst.plist
234
- - example/app/CakeMania/Info/CakeManiaUITst.plist
235
- - example/app/CakeMania/Res/CakeMania-test.entitlements
236
- - example/app/CakeMania/Res/CakeMania.entitlements
237
- - example/app/CakeMania/Res/CakeMania.xcassets/AppIcon.appiconset/Contents.json
238
- - example/app/CakeMania/Src/AppDelegate.swift
239
- - example/app/CakeMania/Src/Base.lproj/LaunchScreen.storyboard
240
- - example/app/CakeMania/Src/Base.lproj/Main.storyboard
241
- - example/app/CakeMania/Src/ObjC/CakeMania-Bridging-Header.h
242
- - example/app/CakeMania/Src/ObjC/Prefix.pch
243
- - example/app/CakeMania/Src/ViewController.swift
244
- - example/app/CakeMania/Tst/Main.swift
245
- - example/app/CakeMania/UITst/Main.swift
246
- - example/framework/Cakefile
247
216
  - fastlane-plugin-xcake/Gemfile
248
217
  - fastlane-plugin-xcake/LICENSE
249
218
  - fastlane-plugin-xcake/README.md
@@ -253,9 +222,6 @@ files:
253
222
  - fastlane-plugin-xcake/lib/fastlane/plugin/xcake/actions/xcake_action.rb
254
223
  - fastlane-plugin-xcake/lib/fastlane/plugin/xcake/version.rb
255
224
  - fastlane-plugin-xcake/spec/spec_helper.rb
256
- - gemfiles/Gemfile.xcodeproj-1.3.x
257
- - gemfiles/Gemfile.xcodeproj-1.4.x
258
- - gemfiles/Gemfile.xcodeproj-edge
259
225
  - hound.yml
260
226
  - lib/xcake.rb
261
227
  - lib/xcake/command.rb
@@ -1,509 +0,0 @@
1
- # Cakefile Syntax Reference
2
-
3
- The `Cakefile` contains a lightweight DSL which provides the instructions on how to generate
4
- a project file. We adopt the convention over configuration and thus it can be very simple:
5
-
6
- ```ruby
7
- application_for :ios, 8.0 do |target|
8
- target.name = "MyApp"
9
- end
10
- ```
11
-
12
- and here is much more complicated one:
13
-
14
- ```ruby
15
- debug_configuration :staging
16
- debug_configuration :debug
17
- release_configuration :release
18
-
19
- application_for :ios, 8.0 do |target|
20
- target.name = "test"
21
- target.all_configurations.each { |c| c.supported_devices = :iphone_only }
22
-
23
- unit_tests_for target
24
- end
25
- ```
26
-
27
- As you can see, it is super easy to read; The goal of Xcake is to keep everything
28
- readable, efficient and concise.
29
-
30
- ## Project
31
-
32
- A project is automatically created from a `Cakefile`. To customize a Project
33
- you can easily access all of it's properties via the `project` method.
34
-
35
- ```ruby
36
- project do |p|
37
- p.project_name = "Project"
38
- end
39
- ```
40
-
41
- You can also directly set the properties without a block, like so:
42
-
43
- ```ruby
44
- project.project_name = "Project"
45
- ```
46
-
47
- ###Properties
48
-
49
- #### Project Name
50
-
51
- Sets the filename for the project
52
-
53
- ```ruby
54
- project.name = "Project"
55
- ```
56
-
57
- #### Class Prefix
58
-
59
- Sets the class prefix for the project
60
-
61
- ```ruby
62
- project.class_prefix = "XC"
63
- ```
64
-
65
- #### Organization
66
-
67
- Sets the organization for the project.
68
-
69
- ```ruby
70
- project.organization = "Xcake Productions"
71
- ```
72
-
73
- ## Targets
74
-
75
- Targets are the way we make products such as Applications, Extensions, Libraries and Tests.
76
- Xcake provides some easy ways to produce these types of targets but also
77
- allows you to drop down a level if you need more power.
78
-
79
- ###Applications
80
-
81
- A project can specify any application targets such as iOS or Mac Apps.
82
-
83
- iOS App:
84
-
85
- ```ruby
86
- application_for :ios, 8.0
87
- ```
88
-
89
- Mac App:
90
-
91
- ```ruby
92
- application_for :mac, 8.0
93
- ```
94
-
95
- ### Tests
96
-
97
- We can also specify a testing targets for other targets as well:
98
-
99
- ```ruby
100
- application_for :mac, 8.0 do |target|
101
- unit_tests_for target
102
- end
103
- ```
104
-
105
- The above code will create a complementary unit tests target for the `target`. The unit tests target name will be default `<target.name>Tests`, so if your `target.name` is "MyFirstApp" then your unit tests target will be named "MyFirstAppTests", and Xcake will include any files that are placed under folder with the same name/path (if it exists).
106
-
107
- If you want to manually control configuration of unit tests targets (and/or have multiple ones), then you should do like this:
108
-
109
- ```ruby
110
- application_for :mac, 8.0 do |target|
111
-
112
- unit_tests_for target do |test_target|
113
-
114
- test_target.name = "MyAwesomeTests"
115
- test_target.include_files = ["Tests/**/*.*"]
116
-
117
- # configure any other target-related properties
118
- # as you would do with application target
119
-
120
- end
121
- end
122
- ```
123
-
124
- ### UI Tests
125
-
126
- To create UI tests target, you do everything the same as for unit tests, but instead of "unit_tests_for" use "ui_tests_for", like this:
127
-
128
- ```ruby
129
- application_for :mac, 8.0 do |target|
130
-
131
- ui_tests_for target do |test_target|
132
-
133
- test_target.name = "MyAwesomeUITests"
134
- test_target.include_files = ["UITests/**/*.*"]
135
-
136
- # configure any other target-related properties
137
- # as you would do with application target
138
-
139
- end
140
- end
141
- ```
142
-
143
- ### Watch
144
-
145
- To create watch applications we can simply use the `watch_app_for` method:
146
-
147
- ```ruby
148
- application_for :mac, 8.0 do |target|
149
- watch_app_for target, 2.0
150
- end
151
- ```
152
-
153
- ###Custom Targets
154
-
155
- If these aren't enough for you then you can specify a target
156
- and manually set up it's properties.
157
-
158
- ```ruby
159
- target do |target|
160
- target.name = "Target"
161
- end
162
- ```
163
-
164
- ###Properties
165
-
166
- #### Name
167
-
168
- Sets the name of the target
169
-
170
- ```ruby
171
- target.name = "Target"
172
- ```
173
-
174
- #### Type
175
-
176
- Sets the type of the target, Can be `:application`, `:dynamic_library`,
177
- `:framework` or `:static_library`.
178
-
179
- ```ruby
180
- target.type = :application
181
- ```
182
-
183
- #### Platform
184
-
185
- Sets the platform of the target. Can be `:ios`, `:osx`, `:tvos` or `:watchos`
186
-
187
- ```ruby
188
- target.platform = :ios
189
- ```
190
-
191
- #### Deployment Target
192
-
193
- Sets the deployment target for the platform.
194
-
195
- ```ruby
196
- target.deployment_target = 8.0
197
- ```
198
-
199
- #### Language
200
-
201
- Sets the primary language of the target, can be `:objc` or `:swift`.
202
-
203
- ```ruby
204
- target.language = :swift
205
- ```
206
-
207
- #### Include Files
208
-
209
- Sets the files to be included for a target, files and groups will be added
210
- to the project to match the file system.
211
-
212
- Xcake implicity figures out which build phase to add the files to, meaning
213
- source code will be compiled and libraries linked.
214
-
215
- [See Here](https://guides.cocoapods.org/syntax/podspec.html#group_file_patterns)
216
- for file patterns
217
-
218
- ```ruby
219
- target.include_files = ["FolderOne/*.*"] # array
220
- target.include_files << "FolderTwo/**/*.*" # add an item to array
221
- ```
222
-
223
- #### Exclude Files
224
-
225
- Sets the files to be excluded for a target, if no target uses these files they
226
- will be excluded from the project
227
-
228
- [See Here](https://guides.cocoapods.org/syntax/podspec.html#group_file_patterns)
229
- for file patterns
230
-
231
- ```ruby
232
- target.exclude_files = ["FolderToIgnore/*.*"] # array
233
- target.exclude_files << "OtherFolderToIgnore/*.*" # add an item to array
234
- ```
235
-
236
- #### Linked Targets
237
-
238
- If you have another library or framework based target in the project you wish to use
239
- from another target (i.e in your application), you can indicate to xcake that you wish
240
- to link them using Linked Targets.
241
-
242
- Xcake will make sue that the library is built and then linked to the target you wish to
243
- use it from.
244
-
245
- ```
246
- target.linked_targets = [linked_target] # array
247
- ```
248
-
249
- Here is a more illustrative example of how to link a library in the project so that it
250
- can be used from an application.
251
-
252
- ```ruby
253
-
254
- libraryTarget = target do |library_target|
255
- # ...configuration here
256
- end
257
-
258
- application_for :ios, 10.0 do |application_target|
259
- application_target.linked_targets = [libraryTarget] # array
260
- end
261
- ```
262
-
263
- #### Build Phases
264
-
265
- Xcake already implcitly creates build phases for you depending on how you configure your target
266
- however you can explicity create additional build phases depending on your needs.
267
-
268
- ##### Copy Headers Build Phase
269
-
270
- You can create a Copy Headers build phase to expose headers for instance for a library.
271
-
272
- ```ruby
273
- target.headers_build_phase "Build Phase Name" do |phase|
274
-
275
- ## Public Headers
276
- phase.public = ["PublicHeader.h"] # array
277
- phase.public << "OtherPublicHeader.h" # add an item to array
278
-
279
- ## Private Headers
280
- phase.private = ["PrivateHeader.h"] # array
281
- phase.private << "OtherPrivateHeader.h" # add an item to array
282
-
283
- ## Project Only Header
284
- phase.project = ["ProjectHeader.h"] # array
285
- phase.project << "OtherProjectHeader.h" # add an item to array
286
- end
287
- ```
288
-
289
- ##### Shell Script Build Phase
290
-
291
- You can create a Shell Script buld phase to run a script when building.
292
-
293
- ```ruby
294
- target.shell_script_build_phase "Build Phase Name", <<-SCRIPT
295
- echo "Hello World"
296
- SCRIPT
297
- end
298
- ```
299
-
300
- ## Configurations
301
-
302
- Xcake allows you define a hierarchy of build configuations like you would in Xcode
303
- for the Project and the Targets.
304
-
305
- ### Debug Configurations
306
-
307
- For configurations used for internal testing we create a debug configuration,
308
- this comes with sensible defaults optimized for debugging (i.e Assertions enabled).
309
-
310
- ```ruby
311
- debug_configuration :staging
312
- ```
313
-
314
- We can modify settings for each configuration easily.
315
-
316
- ```ruby
317
- debug_configuration :staging do |configuration|
318
- configuration.settings["KEY"] = "VALUE"
319
- end
320
- ```
321
-
322
- ### Release Configurations
323
-
324
- For configurations used for release we create a release configuration,
325
- this comes with sensible defaults optimized for releasing (i.e Compiler optimizations enabled).
326
-
327
- ```ruby
328
- release_configuration :release
329
- ```
330
-
331
- We can modify settings for each configuration easily.
332
-
333
- ```ruby
334
- release_configuration :release do |configuration|
335
- configuration.settings["KEY"] = "VALUE"
336
- end
337
- ```
338
-
339
- ### All Configurations
340
-
341
- We can apply a particular shared setting across all of our configurations.
342
- Xcake provides a simply way of doing this via an "all" configuration.
343
-
344
- This will return an array of all of the currently declared configurations.
345
-
346
- ```ruby
347
- all_configurations.each { |c| c.supported_devices = :iphone_only }
348
- ```
349
-
350
- ### Targets
351
-
352
- To modify settings for certain target, then its as simple as prefixing the
353
- target we want to modify the configuration for.
354
-
355
- ```ruby
356
-
357
- target.all_configurations.each { |c| c.supported_devices = :iphone_only }
358
-
359
- debug_configuration :staging do |configuration|
360
- configuration.settings["KEY"] = "VALUE"
361
- end
362
-
363
- target.release_configuration :release do |configuration|
364
- configuration.settings["KEY"] = "VALUE"
365
- end
366
- ```
367
-
368
- ### Configuration Hiearchy
369
-
370
- Xcake allows you to manage the configurations for the project and the target but
371
- it also has its own hiearchy of settings, which are in the following order
372
- (One at the top of the list are overwritten by ones at the bottom):
373
-
374
- - Default Settings
375
- These are the sensible defaults xcake provides for the configuration.
376
-
377
- - Custom Settings
378
- These are the settings set directly on the configuration.
379
-
380
- ### Properties
381
-
382
- #### Name
383
-
384
- Sets the name of the configuration
385
-
386
- ```ruby
387
- configuration.name = "Release"
388
- ```
389
-
390
- #### Configuration File
391
-
392
- Sets the path to a XCConfig file to inherit build settings from.
393
-
394
- ```ruby
395
- configuration.configuration_file = "Files/Settings.xcconfig"
396
- ```
397
-
398
- #### Build Settings
399
-
400
- A hash of all the build settings for a configuration
401
-
402
- ```ruby
403
- configuration.settings["ENABLE_BITCODE"] = false
404
- ```
405
-
406
- ### Build Settings Shortcuts
407
-
408
- Xcake also provides some shortcuts for some common build settings.
409
-
410
- #### Supported Devices
411
-
412
- Allows you specify the devices an iOS App can run on, can be `:iphone_only`,
413
- `:ipad_only` or `:universal`
414
-
415
- ```ruby
416
- configuration.supported_devices = :iphone_only
417
- ```
418
-
419
- #### Product Bundle Identifier
420
-
421
- Allows you specify the product bundle identifier.
422
-
423
- ```ruby
424
- configuration.product_bundle_identifier = "com.test.app"
425
- ```
426
-
427
- #### Preprocessor Definitions
428
-
429
- Allows you to specify preprocessor definitions.
430
-
431
- ```ruby
432
- configuration.preprocessor_definitions["NAME"] = "VALUE"
433
- ```
434
- ## Schemes
435
-
436
- Xcake allows you to specify schemes for launching, testing,
437
- profiling and archiving targets.
438
-
439
- When no schemes are specified for a target then Xcake will auto generate
440
- a scheme per configuration per target (i.e "Target-Debug" and "Target-Release")
441
-
442
- ### Creating A Scheme
443
-
444
- We can create a scheme with the name of the target like so:
445
-
446
- ```ruby
447
- target.scheme(target.name)
448
- ```
449
-
450
- If we don't configure this scheme then it will default to the reccomended
451
- Apple settings of using the debug build configurations for everything
452
- except the Archive action which will use the Release configuration.
453
-
454
- We can modify settings for a scheme easily.
455
-
456
- ```ruby
457
- target.scheme(target.name) do |scheme|
458
- scheme.build_configuration = :staging
459
- end
460
- ```
461
- ### Properties
462
-
463
- #### Name
464
-
465
- Sets the name of the scheme
466
-
467
- ```ruby
468
- scheme.name = "MyApp"
469
- ```
470
-
471
- #### Test Configuration
472
-
473
- Sets the configuration to use when running tests
474
-
475
- ```ruby
476
- scheme.test_configuration = :debug
477
- ```
478
-
479
- #### Launch Configuration
480
-
481
- Sets the configuration to use when running tests
482
-
483
- ```ruby
484
- scheme.launch_configuration = :debug
485
- ```
486
-
487
- #### Profile Configuration
488
-
489
- Sets the configuration to use when profiling a target
490
-
491
- ```ruby
492
- scheme.profile_configuration = :debug
493
- ```
494
-
495
- #### Analyze Configuration
496
-
497
- Sets the configuration to use when analyzing a target
498
-
499
- ```ruby
500
- scheme.analyze_configuration = :debug
501
- ```
502
-
503
- #### Archive Configuration
504
-
505
- Sets the configuration to use when archiving
506
-
507
- ```ruby
508
- scheme.archive_configuration = :debug
509
- ```