xcake 0.7.1 → 0.8.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.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +11 -3
  3. data/CHANGELOG.md +15 -0
  4. data/README.md +3 -1
  5. data/bin/xcake +0 -1
  6. data/docs/Cakefile.md +82 -1
  7. data/docs/Xcode Project Support.md +5 -0
  8. data/example/app/CakeMania/CakeMania.xcodeproj/project.pbxproj +973 -0
  9. data/example/app/CakeMania/CakeMania.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  10. data/example/app/CakeMania/CakeMania.xcodeproj/project.xcworkspace/xcuserdata/maxim.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  11. data/example/app/CakeMania/CakeMania.xcodeproj/xcshareddata/xcschemes/CakeMania-AppStore.xcscheme +91 -0
  12. data/example/app/CakeMania/CakeMania.xcodeproj/xcshareddata/xcschemes/CakeMania-Debug.xcscheme +91 -0
  13. data/example/app/CakeMania/CakeMania.xcodeproj/xcshareddata/xcschemes/CakeMania-Production.xcscheme +91 -0
  14. data/example/app/CakeMania/CakeMania.xcodeproj/xcshareddata/xcschemes/CakeMania-RC.xcscheme +91 -0
  15. data/example/app/CakeMania/CakeMania.xcodeproj/xcshareddata/xcschemes/CakeMania-Staging.xcscheme +91 -0
  16. data/example/app/CakeMania/CakeMania.xcodeproj/xcuserdata/maxim.xcuserdatad/xcschemes/CakeManiaTst.xcscheme +56 -0
  17. data/example/app/CakeMania/CakeMania.xcodeproj/xcuserdata/maxim.xcuserdatad/xcschemes/CakeManiaUITst.xcscheme +56 -0
  18. data/example/app/CakeMania/CakeMania.xcodeproj/xcuserdata/maxim.xcuserdatad/xcschemes/xcschememanagement.plist +72 -0
  19. data/{docs/Sample → example/app/CakeMania}/Cakefile +80 -47
  20. data/example/app/CakeMania/Info/CakeMania.plist +38 -0
  21. data/example/app/CakeMania/Info/CakeManiaTst.plist +22 -0
  22. data/example/app/CakeMania/Info/CakeManiaUITst.plist +22 -0
  23. data/example/app/CakeMania/Res/CakeMania-test.entitlements +10 -0
  24. data/example/app/CakeMania/Res/CakeMania.entitlements +10 -0
  25. data/example/app/CakeMania/Res/CakeMania.xcassets/AppIcon.appiconset/Contents.json +48 -0
  26. data/example/app/CakeMania/Src/AppDelegate.swift +46 -0
  27. data/example/app/CakeMania/Src/Base.lproj/LaunchScreen.storyboard +27 -0
  28. data/example/app/CakeMania/Src/Base.lproj/Main.storyboard +26 -0
  29. data/example/app/CakeMania/Src/ObjC/CakeMania-Bridging-Header.h +3 -0
  30. data/example/app/CakeMania/Src/ObjC/Prefix.pch +14 -0
  31. data/example/app/CakeMania/Src/ViewController.swift +25 -0
  32. data/example/app/CakeMania/Tst/Main.swift +36 -0
  33. data/example/app/CakeMania/UITst/Main.swift +36 -0
  34. data/example/framework/Cakefile +133 -0
  35. data/gemfiles/Gemfile.xcodeproj-1.3.x +5 -0
  36. data/gemfiles/Gemfile.xcodeproj-1.4.x +5 -0
  37. data/gemfiles/Gemfile.xcodeproj-edge +5 -0
  38. data/lib/xcake/build_phase/headers_build_phase.rb +47 -0
  39. data/lib/xcake/build_phase/shell_script_build_phase.rb +24 -0
  40. data/lib/xcake/build_phase.rb +36 -0
  41. data/lib/xcake/constants.rb +82 -0
  42. data/lib/xcake/context/xcodeproj_context.rb +10 -0
  43. data/lib/xcake/context.rb +24 -0
  44. data/lib/xcake/generator/scheme_generator.rb +13 -2
  45. data/lib/xcake/generator/target_build_phase_generator.rb +11 -3
  46. data/lib/xcake/generator/target_dependency_generator.rb +1 -1
  47. data/lib/xcake/generator/target_file_reference_generator.rb +4 -5
  48. data/lib/xcake/generator/target_link_generator.rb +25 -0
  49. data/lib/xcake/informative.rb +0 -1
  50. data/lib/xcake/path_classifier.rb +5 -5
  51. data/lib/xcake/project/sugar.rb +7 -5
  52. data/lib/xcake/project.rb +0 -1
  53. data/lib/xcake/target/configurable.rb +2 -6
  54. data/lib/xcake/target/sugar.rb +28 -3
  55. data/lib/xcake/target.rb +34 -18
  56. data/lib/xcake/ui.rb +1 -4
  57. data/lib/xcake/version.rb +1 -1
  58. data/lib/xcake/xcode/project.rb +25 -13
  59. data/lib/xcake/xcode/scheme.rb +3 -0
  60. data/lib/xcake/xcode/scheme_list.rb +0 -23
  61. data/lib/xcake/xcodeproj_ext/PBXGroup.rb +3 -3
  62. data/lib/xcake/xcodeproj_ext/PBXNativeTarget.rb +0 -1
  63. data/lib/xcake.rb +10 -5
  64. data/rubocop.yml +0 -4
  65. data/xcake.gemspec +8 -7
  66. metadata +112 -80
  67. data/lib/xcake/generator/target_custom_build_phase_generator.rb +0 -16
  68. data/lib/xcake/shell_script_build_phase.rb +0 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a0fcc179fc45aaac5a2ddda294482388a957c656
4
- data.tar.gz: 7ae7e339d3bb77f0cbd107ecb55fc7dc6f97afde
3
+ metadata.gz: 9dd03b14ab161ed70a1e93b9fba18cd2afb07ef4
4
+ data.tar.gz: 38465332b4fc403839295c20303a02e9d7971fef
5
5
  SHA512:
6
- metadata.gz: 933ff2760e11899e5072c40e153c5097d4005778d115c4af68f022d85702e4db5013eaf6bc7113de5cfb60c2073190679711dc62345929dc38f2e0de4daaaa12
7
- data.tar.gz: 23da41ae5939f3d965f210abdef79c687ef2fa5e22b1d1157846214851791004254634e3a46ddc199aba43ff39e12f07755d0549b3fb352e77dc7fa1a28d4bfe
6
+ metadata.gz: 4623186e840303d74cd19d13e17350eb3bb843d19c8a18c0997b62e6b68cd1ad02ed14258a9cfa4587e643a3c37a734e5ef1ca5878f7e4dcb4613e4067fecf44
7
+ data.tar.gz: 8a5abfc099e37a66e6d1a368371636234f1a418b996080ca3fd8d6e7e28fcd1daa8bbb290289f2df2d9e0d4df1fed3521976effe2810d774b350e9cc298b2f7f
data/.travis.yml CHANGED
@@ -1,8 +1,16 @@
1
1
  os:
2
2
  - osx
3
3
  language: ruby
4
+ gemfile:
5
+ - gemfiles/Gemfile.xcodeproj-1.3.x
6
+ - gemfiles/Gemfile.xcodeproj-1.4.x
7
+ - gemfiles/Gemfile.xcodeproj-edge
4
8
  rvm:
5
- - 2.0.0
6
- - 2.1.6
7
- - 2.2.2
9
+ # The latest ruby version
10
+ # - 2.4.0 # Doesn't build :()
11
+ - 2.3.1
12
+ # OS X 10.9.5-10.10.0 (2.0.0-p481)
13
+ - 2.0.0-p481
14
+ # OS X 10.9.3-10.9.4
15
+ - 2.0.0-p451
8
16
  before_install: gem install bundler -v 1.10.6
data/CHANGELOG.md CHANGED
@@ -1,3 +1,18 @@
1
+ v0.8.1
2
+ ======
3
+ - Fixes error creating shell script build phase.
4
+
5
+ v0.8.0
6
+ ======
7
+ - Dropped support for Xcodeproj 0.20.0.
8
+ - Adds support for Xcodeproj 1.4.x.
9
+ - Adds support for copy headers build phase.
10
+ - Adds linked targets to allow you to link to a library or framework created from your project.
11
+ - Fixes bug where runpath searchpaths wasn't set for unit test bundles causing libraries not to be loaded.
12
+ - Fixes bug where Xcake could add duplicate file reference to project.
13
+ - Schemes are generated across all targets not just Application targets.
14
+ - UI Test no longer produce a redundant scheme.
15
+
1
16
  v0.7.1
2
17
  ======
3
18
  - Implemented syntax for declaring UI Test targets.
data/README.md CHANGED
@@ -97,7 +97,9 @@ Xcake will then generate a Xcode project based on your Cakefile
97
97
 
98
98
  ## Sample Cakefile
99
99
 
100
- To get better understanding of how to start using Xcake in a real project, see sample [Cakefile](https://github.com/jcampbell05/xcake/blob/master/docs/Sample/Cakefile).
100
+ To get better understanding of how to start using Xcake in a real project, see examples under [example](https://github.com/jcampbell05/xcake/tree/master/example) folder.
101
+
102
+ There is a sample [app project](https://github.com/jcampbell05/xcake/blob/master/example/app/CakeMania) (the project file has been generated using Xcake v.0.7.1 based on the [Cakefile](https://github.com/jcampbell05/xcake/blob/master/example/app/CakeMania/Cakefile)) as well as sample [Cakefile](https://github.com/jcampbell05/xcake/blob/master/example/framework/Cakefile) for an iOS framework project.
101
103
 
102
104
  ## Need help?
103
105
  Please submit an issue on GitHub and provide information about your setup
data/bin/xcake CHANGED
@@ -2,6 +2,5 @@
2
2
 
3
3
  require 'xcake'
4
4
 
5
- # TODO: Make UI and EventHooks DI-able
6
5
  Xcake::UI.register_ui_hooks
7
6
  Xcake::Command.run(ARGV)
data/docs/Cakefile.md CHANGED
@@ -209,6 +209,9 @@ target.language = :swift
209
209
  Sets the files to be included for a target, files and groups will be added
210
210
  to the project to match the file system.
211
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
+
212
215
  [See Here](https://guides.cocoapods.org/syntax/podspec.html#group_file_patterns)
213
216
  for file patterns
214
217
 
@@ -230,6 +233,84 @@ target.exclude_files = ["FolderToIgnore/*.*"] # array
230
233
  target.exclude_files << "OtherFolderToIgnore/*.*" # add an item to array
231
234
  ```
232
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
+ ##### Link Libraries Build Phase
290
+
291
+ You can create a Link Libraries build phase to link a lobrary when building.
292
+
293
+ Note: If you import a library or framework using `include_files` then xcake
294
+ already adds it to the Link Libraries build phase.
295
+
296
+ ```ruby
297
+ target.link_build_phase "Build Phase Name" do |phase|
298
+ phase.files = ["LibraryToLink.a"] # array
299
+ phase.filwa << "OtherLibraryToLink.a" # add an item to array
300
+ end
301
+ ```
302
+
303
+ ##### Shell Script Build Phase
304
+
305
+ You can create a Shell Script buld phase to run a script when building.
306
+
307
+ ```ruby
308
+ target.shell_script_build_phase "Build Phase Name", <<-SCRIPT
309
+ echo "Hello World"
310
+ SCRIPT
311
+ end
312
+ ```
313
+
233
314
  ## Configurations
234
315
 
235
316
  Configurations are an abstraction of build settings and scheme settings. Depending
@@ -341,7 +422,7 @@ configuration.settings["ENABLE_BITCODE"] = false
341
422
 
342
423
  ### Build Settings Shortcuts
343
424
 
344
- Xcake also provides some shortcuts for some more common build settings.
425
+ Xcake also provides some shortcuts for some common build settings.
345
426
 
346
427
  #### Supported Devices
347
428
 
@@ -28,6 +28,9 @@ This document describes the level of support Xcake has for the various aspects o
28
28
  - Specify build settings via configurations
29
29
  - Simple methods for creating iOS, Mac and WatchOS Applications.
30
30
  - Simple methods for creating Unit Tests
31
+ - Build Phases are generated implicity and can be specified explicity for:
32
+ - Copy Headerss
33
+ - Shell Script
31
34
 
32
35
  ## Configuration
33
36
 
@@ -45,4 +48,6 @@ This document describes the level of support Xcake has for the various aspects o
45
48
  ## Files
46
49
 
47
50
  - Can Include Normal Files
51
+ - Can Include Bundles
52
+ - Can Include Libraries
48
53
  - Can Include Localized Files