xcake 0.8.12 → 0.8.13

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: 1dde5e41df8ae9a58444f1ed09ecd44797f5643d
4
- data.tar.gz: 03bb619369f0fbfb00ecd3e2bc9655e487936dc4
3
+ metadata.gz: 922659236668f3f498562f2355111f765332f962
4
+ data.tar.gz: 38fdc71a060d82c42168b4950379193fcca38737
5
5
  SHA512:
6
- metadata.gz: 95a03f9e827e88375540b34c6a925508d1c368175c650943c8dd4ed1d9a0b42cd392074bba01e880ec6bad817ff21a97975cca29883f3a8ac8cbaa193cf3288f
7
- data.tar.gz: 081eeba95e84cfe935024b6d8eaf71b677e1c6f49fc432fb613645dcaaad0ae62dafd444c6d3b9f06268787396e10a33259705f74166d7571c70575a512f318e
6
+ metadata.gz: 99a37036e27cb624edb346a4bb911e7b78034a54d730d0e09934c712c070e6ce385b4eebfda2df60354eef117fadf49ff03e22a3e3a3c838e1dee835dde57856
7
+ data.tar.gz: 0f8527a7d02ba8466bae4969f741c892c209b0e118579677eac6bd7c4d7f36fa0dbecc9f69c6745bf6dbd20c611b0d69319cf1abd34ec10b7edcd24122bf5319
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ v0.8.13
2
+ =======
3
+ - Fixes some of the gem being bundled with older code
4
+
1
5
  v0.8.12
2
6
  =======
3
7
  - Fixes bug with the target file reference generator
data/lib/xcake.rb CHANGED
@@ -39,12 +39,12 @@ require 'xcake/dsl/project/hooks'
39
39
 
40
40
  require 'xcake/dsl/scheme'
41
41
 
42
- require 'xcake/dsl/scheme'
43
-
44
42
  require 'xcake/dsl/target'
45
43
  require 'xcake/dsl/target/sugar'
46
44
  require 'xcake/dsl/target/configurable'
47
45
 
46
+ require 'xcake/dsl/build_rule'
47
+
48
48
  require 'xcake/dsl/build_phase'
49
49
  require 'xcake/dsl/build_phase/headers_build_phase'
50
50
  require 'xcake/dsl/build_phase/shell_script_build_phase'
@@ -11,6 +11,8 @@ module Xcake
11
11
  case dsl_object
12
12
  when BuildPhase
13
13
  create_object_for_build_phase(dsl_object)
14
+ when BuildRule
15
+ create_object_for_build_rule(dsl_object)
14
16
  when Project
15
17
  create_object_for_project(dsl_object)
16
18
  when Target
@@ -26,6 +28,10 @@ module Xcake
26
28
  @project.new(build_phase.build_phase_type)
27
29
  end
28
30
 
31
+ def create_object_for_build_rule(build_rule)
32
+ @project.new(Xcodeproj::Project::Object::PBXBuildRule)
33
+ end
34
+
29
35
  def create_object_for_project(project)
30
36
 
31
37
  project_path = "./#{project.name}.xcodeproj"
@@ -0,0 +1,76 @@
1
+ module Xcake
2
+ # This class is used to describe a build rule for a
3
+ # Xcode project; This forms part of the DSL
4
+ # and is usually stored in files named `Cakefile`.
5
+ #
6
+ class BuildRule
7
+ # @return [String] the name of the rule.
8
+ #
9
+ attr_accessor :name
10
+
11
+ # @return [String] the type of the files that should be processed by
12
+ # this rule.
13
+ #
14
+ # @example
15
+ # `pattern.proxy`.
16
+ #
17
+ attr_accessor :file_type
18
+
19
+ # @return [ObjectList<PBXFileReference>] the file references for the
20
+ # output files.
21
+ #
22
+ attr_accessor :output_files
23
+
24
+ # @return [ObjectList<String>] the compiler flags used when creating the
25
+ # respective output files.
26
+ #
27
+ attr_accessor :output_files_compiler_flags
28
+
29
+ # @return [String] the content of the script to use for the build rule.
30
+ #
31
+ # @note This attribute is present if the #{#compiler_spec} is
32
+ # `com.apple.compilers.proxy.script`
33
+ #
34
+ attr_accessor :script
35
+
36
+ # @param [Proc] block
37
+ # an optional block that configures the build rule through the DSL.
38
+ #
39
+ # @example Creating a Build Rule.
40
+ #
41
+ # BuildRule.new do |p|
42
+ # p.name "test"
43
+ # end
44
+ #
45
+ def initialize
46
+ @output_files = []
47
+ @output_files_compiler_flags = []
48
+
49
+ yield(self) if block_given?
50
+ end
51
+
52
+ # This method is called when generating the build rules
53
+ # subclasses should implement this to handle the
54
+ # configuration of the build phase
55
+ #
56
+ def configure_native_build_rule(native_build_rule, _context)
57
+ native_build_rule.name = name
58
+ native_build_rule.compiler_spec = "com.apple.compilers.proxy.script"
59
+ native_build_rule.file_type = file_type
60
+ native_build_rule.script = script.strip_heredoc
61
+ if output_files_compiler_flags.empty? then
62
+ output_files.each do |file|
63
+ native_build_rule.add_output_file(file)
64
+ end
65
+ else
66
+ output_files.zip(output_files_compiler_flags).each do |file, flag|
67
+ native_build_rule.add_output_file(file, flag)
68
+ end
69
+ end
70
+ end
71
+
72
+ def to_s
73
+ "BuildRule<#{name}>"
74
+ end
75
+ end
76
+ end
@@ -42,6 +42,11 @@ module Xcake
42
42
  #
43
43
  attr_accessor :build_phases
44
44
 
45
+ # @return [Array<BuildRule>] the list
46
+ # of build rules for the project.
47
+ #
48
+ attr_accessor :build_rules
49
+
45
50
  # @!group File patterns
46
51
 
47
52
  #
@@ -189,6 +194,7 @@ module Xcake
189
194
  def initialize
190
195
  @pinned_build_phases = []
191
196
  @build_phases = []
197
+ @build_rules = []
192
198
  @exclude_files = []
193
199
  @linked_targets = []
194
200
  @system_libraries = []
@@ -71,5 +71,27 @@ module Xcake
71
71
  build_phases << phase
72
72
  phase
73
73
  end
74
+
75
+ # Creates a new build rule for the
76
+ # target
77
+ #
78
+ # @param [String] name
79
+ # the name to use for the build rule
80
+ #
81
+ # @param [Proc] block
82
+ # an optional block that configures the build rule through the DSL.
83
+ #
84
+ # @return [BuildRule] the new xcode build rule
85
+ #
86
+ def build_rule(name, file_type, output_files, output_files_compiler_flags, script, &block)
87
+ rule = BuildRule.new(&block)
88
+ rule.name = name
89
+ rule.file_type = file_type
90
+ rule.output_files = output_files
91
+ rule.output_files_compiler_flags = output_files_compiler_flags
92
+ rule.script = script
93
+ build_rules << rule
94
+ rule
95
+ end
74
96
  end
75
97
  end
@@ -55,6 +55,11 @@ module Xcake
55
55
  #
56
56
  define_hooks :before_adding_system_framework
57
57
 
58
+ # Defines hook which is ran before we add build rules
59
+ # to a target
60
+ #
61
+ define_hooks :before_adding_build_rules
62
+
58
63
  # Defines hook which is ran before we add build phases
59
64
  # to a target
60
65
  #
@@ -68,6 +73,11 @@ module Xcake
68
73
  #
69
74
  define_hooks :before_adding_file
70
75
 
76
+ # Defines hook which is ran before we add a custom build rule to
77
+ # a target
78
+ #
79
+ define_hooks :before_adding_custom_build_rule
80
+
71
81
  # Defines hook which is ran before we add a custom build phase to
72
82
  # a target
73
83
  #
@@ -13,18 +13,30 @@ module Xcake
13
13
  scheme_list = @context.scheme_list
14
14
  native_target = @context.native_object_for(target)
15
15
 
16
- target.schemes.each do |scheme|
16
+ target.schemes.each do |scheme|
17
17
 
18
18
  scheme_list.supress_autocreation_of_target(native_target)
19
19
 
20
20
  native_scheme = @context.native_object_for(scheme)
21
21
  native_scheme.name = scheme.name
22
22
 
23
+ native_scheme.configure_with_targets(native_target, nil)
24
+
23
25
  native_project = @context.native_object_for(@project)
24
26
  native_unit_test_target = native_project.find_unit_test_target_for_target(target)
25
27
 
26
28
  if native_unit_test_target
27
29
  scheme_list.supress_autocreation_of_target(native_unit_test_target)
30
+ # native_scheme.add_build_target(native_unit_test_target, false)
31
+ native_scheme.add_test_target(native_unit_test_target)
32
+ end
33
+
34
+ native_ui_test_target = native_project.find_ui_test_target_for_target(target)
35
+
36
+ if native_ui_test_target
37
+ scheme_list.supress_autocreation_of_target(native_ui_test_target)
38
+ # native_scheme.add_build_target(native_ui_test_target, false)
39
+ native_scheme.add_test_target(native_ui_test_target)
28
40
  end
29
41
 
30
42
  # # TODO: Spec
@@ -37,7 +49,6 @@ module Xcake
37
49
  # build_action.add_entry(entry)
38
50
  # end
39
51
 
40
- native_scheme.configure_with_targets(native_target, native_unit_test_target)
41
52
  native_scheme.test_action.build_configuration = scheme.test_configuration
42
53
  native_scheme.launch_action.build_configuration = scheme.launch_configuration
43
54
  native_scheme.profile_action.build_configuration = scheme.profile_configuration
@@ -48,6 +59,7 @@ module Xcake
48
59
  end
49
60
  end
50
61
 
62
+
51
63
  def leave_project(project)
52
64
  scheme_list = @context.scheme_list
53
65
  scheme_list.save
@@ -0,0 +1,24 @@
1
+ module Xcake
2
+ # This generator generates the build phases for each target
3
+ # in the project
4
+ #
5
+ class TargetBuildRuleGenerator < Generator
6
+ def self.dependencies
7
+ [TargetBuildPhaseGenerator]
8
+ end
9
+
10
+ def visit_target(target)
11
+ EventHooks.run_hook :before_adding_build_rules, target
12
+
13
+ native_target = @context.native_object_for(target)
14
+
15
+ target.build_rules.each do |rule|
16
+ EventHooks.run_hook :before_adding_custom_build_rule, rule, target
17
+
18
+ native_build_rule = @context.native_object_for(rule)
19
+ rule.configure_native_build_rule(native_build_rule, @context)
20
+ native_target.build_rules << native_build_rule
21
+ end
22
+ end
23
+ end
24
+ end
@@ -7,7 +7,7 @@ module Xcake
7
7
  EXTENSION_MAPPINGS = {
8
8
  PBXFrameworksBuildPhase: %w(.a .dylib .so .framework).freeze,
9
9
  PBXHeadersBuildPhase: %w(.h .hpp).freeze,
10
- PBXSourcesBuildPhase: %w(.c .m .mm .cpp .swift .xcdatamodeld).freeze,
10
+ PBXSourcesBuildPhase: %w(.c .m .mm .cpp .swift .xcdatamodeld .java).freeze,
11
11
  PBXResourcesBuildPhase: %w(.xcassets).freeze
12
12
  }.freeze
13
13
 
data/lib/xcake/ui.rb CHANGED
@@ -53,6 +53,10 @@ module Xcake
53
53
  board.puts_indented "- Integrating System Frameworks #{target.system_frameworks} for #{target}"
54
54
  end
55
55
 
56
+ EventHooks.before_adding_build_rules do |target|
57
+ board.puts_indented "- Creating build rules for #{target}"
58
+ end
59
+
56
60
  EventHooks.before_adding_build_phases do |target|
57
61
  board.puts_indented "- Creating build phases for #{target}"
58
62
  end
@@ -65,6 +69,10 @@ module Xcake
65
69
  board.puts "- Adding #{node.path}"
66
70
  end
67
71
 
72
+ EventHooks.before_adding_custom_build_rule do |rule, target|
73
+ board.puts "- Adding \"#{rule}\" to #{target}"
74
+ end
75
+
68
76
  EventHooks.before_adding_custom_build_phase do |phase, target|
69
77
  board.puts "- Adding \"#{phase}\" to #{target}"
70
78
  end
data/lib/xcake/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Xcake
2
- VERSION = '0.8.12'.freeze
2
+ VERSION = '0.8.13'.freeze
3
3
  end
@@ -198,6 +198,19 @@ module Xcake
198
198
  t.name == "#{target.name}Tests"
199
199
  end
200
200
  end
201
+
202
+ # Finds a ui test target for a xcode target
203
+ #
204
+ # @param [Target] target
205
+ # target to find a xcode target for.
206
+ #
207
+ # @return [Target] ui test target
208
+ #
209
+ def find_ui_test_target_for_target(target)
210
+ targets.find do |t|
211
+ t.name == "#{target.name}UITests"
212
+ end
213
+ end
201
214
  end
202
215
  end
203
216
  end
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.12
4
+ version: 0.8.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Campbell
@@ -252,6 +252,7 @@ files:
252
252
  - lib/xcake/dsl/build_phase/copy_files_build_phase.rb
253
253
  - lib/xcake/dsl/build_phase/headers_build_phase.rb
254
254
  - lib/xcake/dsl/build_phase/shell_script_build_phase.rb
255
+ - lib/xcake/dsl/build_rule.rb
255
256
  - lib/xcake/dsl/configurable.rb
256
257
  - lib/xcake/dsl/configuration.rb
257
258
  - lib/xcake/dsl/configuration/proxies/preproccessor_definitions_setting_proxy.rb
@@ -271,6 +272,7 @@ files:
271
272
  - lib/xcake/generator/project_metadata_generator.rb
272
273
  - lib/xcake/generator/scheme_generator.rb
273
274
  - lib/xcake/generator/target_build_phase_generator.rb
275
+ - lib/xcake/generator/target_build_rule_generator.rb
274
276
  - lib/xcake/generator/target_dependency_generator.rb
275
277
  - lib/xcake/generator/target_file_reference_generator.rb
276
278
  - lib/xcake/generator/target_framework_generator.rb