xcake 0.8.12 → 0.8.13

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: 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