xcake 0.7.1 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
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