xcake 0.5.3 → 0.6.2

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 (56) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -0
  3. data/Gemfile.lock +11 -23
  4. data/lib/xcake.rb +34 -18
  5. data/lib/xcake/command/init.rb +1 -1
  6. data/lib/xcake/command/make.rb +17 -4
  7. data/lib/xcake/configurable.rb +4 -0
  8. data/lib/xcake/context.rb +15 -0
  9. data/lib/xcake/context/xcodeproj_context.rb +49 -0
  10. data/lib/xcake/core_ext/string.rb +8 -0
  11. data/lib/xcake/dependency.rb +23 -0
  12. data/lib/xcake/dependency_provider.rb +28 -0
  13. data/lib/xcake/file_reference_installer.rb +54 -0
  14. data/lib/xcake/file_reference_installer/compile_source_file_reference_installer.rb +16 -0
  15. data/lib/xcake/file_reference_installer/compile_xcdatamodeld_file_reference_installer.rb +25 -0
  16. data/lib/xcake/file_reference_installer/copy_resources_file_reference_installer.rb +21 -0
  17. data/lib/xcake/file_reference_installer/copy_xcassets_file_reference_installer.rb +25 -0
  18. data/lib/xcake/file_reference_installer/header_file_reference_installer.rb +11 -0
  19. data/lib/xcake/generator.rb +16 -0
  20. data/lib/xcake/generator/configuration_generator.rb +36 -0
  21. data/lib/xcake/generator/project_generator.rb +17 -0
  22. data/lib/xcake/generator/project_metadata_generator.rb +11 -0
  23. data/lib/xcake/{project_structure_resolver.rb → generator/project_structure_generator.rb} +1 -6
  24. data/lib/xcake/generator/scheme_generator.rb +16 -0
  25. data/lib/xcake/generator/target_build_phase_generator.rb +49 -0
  26. data/lib/xcake/generator/target_custom_build_phase_generator.rb +16 -0
  27. data/lib/xcake/generator/target_dependency_generator.rb +15 -0
  28. data/lib/xcake/generator/target_file_reference_generator.rb +59 -0
  29. data/lib/xcake/generator/target_framework_generator.rb +14 -0
  30. data/lib/xcake/generator/target_generator.rb +12 -0
  31. data/lib/xcake/informative.rb +2 -0
  32. data/lib/xcake/plugin.rb +25 -0
  33. data/lib/xcake/project.rb +13 -9
  34. data/lib/xcake/project/sugar.rb +2 -3
  35. data/lib/xcake/shell_script_build_phase.rb +15 -0
  36. data/lib/xcake/target.rb +24 -15
  37. data/lib/xcake/target/sugar.rb +13 -0
  38. data/lib/xcake/ui.rb +7 -0
  39. data/lib/xcake/version.rb +1 -1
  40. data/lib/xcake/visitor.rb +2 -2
  41. data/lib/xcake/xcode/project.rb +25 -2
  42. data/xcake.gemspec +1 -0
  43. metadata +43 -17
  44. data/LICENSE +0 -201
  45. data/lib/fastlane_plugin.rb +0 -5
  46. data/lib/xcake/generator/build_phase.rb +0 -78
  47. data/lib/xcake/generator/build_phase/compile_source_build_phase.rb +0 -18
  48. data/lib/xcake/generator/build_phase/compile_xcdatamodeld_build_phase.rb +0 -20
  49. data/lib/xcake/generator/build_phase/copy_resources_build_phase.rb +0 -17
  50. data/lib/xcake/generator/build_phase/copy_xcassets_build_phase.rb +0 -21
  51. data/lib/xcake/generator/build_phase/header_file_build_phase.rb +0 -13
  52. data/lib/xcake/generator/build_phase_registry.rb +0 -40
  53. data/lib/xcake/generator/configuration.rb +0 -46
  54. data/lib/xcake/generator/path.rb +0 -41
  55. data/lib/xcake/generator/project.rb +0 -64
  56. data/lib/xcake/generator/target.rb +0 -48
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4e1e0bee85a73559a786f161dae75f8338c95118
4
- data.tar.gz: 0910e7d9739e35d6bc942b2d452820f9ad7767d0
3
+ metadata.gz: 7d1395ab449d68f8c6752ab847f68c2e792c4a5f
4
+ data.tar.gz: 4ddc2a92892c9b3055afe502e32a74dea9a0b091
5
5
  SHA512:
6
- metadata.gz: 04fa237a1b45cc38f949866c0b7132b38ea3178b7b783bbe9af2569d1b5bc76c01dbfb07620cd72abc1a97a5a871c97b7dcdc2082eda227fda231be6bd72299e
7
- data.tar.gz: 3f069a48e5aea5d89fe04c3b0dc1af43d136f1e699756fbe360fa4c654cd6851260145dafc88c20be976786dcd3a2e3bc8fb5f75d126ae110b8ac091ac916382
6
+ metadata.gz: 0f78ec259d2c68355f7683dc155b8c62ec49dfd89fc25c15f4c8a92e361fe628ad53acdbe5e9be99cd6b2facbc4b477fdef32fd9237ec4e2efbcf581006c6cf6
7
+ data.tar.gz: 392069628c7ebe6816cfdf4a8c67e13e584329a40392b35860782f9b8e7dbb3e324518a4cb4f9f6dec12da0677b32aa9f20ac9ebbf99302067112acafd5248e3
data/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ v0.6.2
2
+ ======
3
+ - Fixes bug where certain file installers fail to register correctly and could cause issues with adding certain files to the xcode project.
4
+
5
+ v0.6.1
6
+ ======
7
+ - Reduces gem file-size
8
+
9
+ v0.6.0
10
+ ======
11
+ - Correctly infers build phases for the apple watch.
12
+ - Fixes bug where configurations lacked a name when using shorthand syntax. (Thanks to @colinta).
13
+ - Adds support for custom script build phases (Thanks to @colinta).
14
+
1
15
  v0.5.3
2
16
  ======
3
17
  - Updates `xcake bake` to more generic `xcake make` (Thanks to @roger-tan).
data/Gemfile.lock CHANGED
@@ -1,47 +1,42 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- xcake (0.5.3)
4
+ xcake (0.6.2)
5
5
  claide (~> 0.9.1)
6
6
  hooks (~> 0.4.1)
7
+ molinillo
7
8
  tty (~> 0.3.2)
8
9
  xcodeproj (~> 0.28)
9
10
 
10
11
  GEM
11
12
  remote: https://rubygems.org/
12
13
  specs:
13
- activesupport (4.2.5)
14
+ activesupport (4.2.5.1)
14
15
  i18n (~> 0.7)
15
16
  json (~> 1.7, >= 1.7.7)
16
17
  minitest (~> 5.1)
17
18
  thread_safe (~> 0.3, >= 0.3.4)
18
19
  tzinfo (~> 1.1)
19
20
  claide (0.9.1)
20
- coderay (1.1.0)
21
+ coderay (1.1.1)
21
22
  colored (1.2)
22
- coveralls (0.8.10)
23
+ coveralls (0.8.11)
23
24
  json (~> 1.8)
24
- rest-client (>= 1.6.8, < 2)
25
25
  simplecov (~> 0.11.0)
26
26
  term-ansicolor (~> 1.3)
27
27
  thor (~> 0.19.1)
28
28
  tins (~> 1.6.0)
29
29
  diff-lcs (1.2.5)
30
30
  docile (1.1.5)
31
- domain_name (0.5.25)
32
- unf (>= 0.0.5, < 1.0.0)
33
31
  equatable (0.5.0)
34
32
  hooks (0.4.1)
35
33
  uber (~> 0.0.14)
36
- http-cookie (1.0.2)
37
- domain_name (~> 0.5)
38
34
  i18n (0.7.0)
39
35
  json (1.8.3)
40
36
  method_source (0.8.2)
41
- mime-types (2.99)
42
- minitest (5.8.3)
37
+ minitest (5.8.4)
38
+ molinillo (0.4.3)
43
39
  necromancer (0.3.0)
44
- netrc (0.11.0)
45
40
  pastel (0.5.3)
46
41
  equatable (~> 0.5.0)
47
42
  tty-screen (~> 0.4.3)
@@ -49,25 +44,21 @@ GEM
49
44
  coderay (~> 1.1.0)
50
45
  method_source (~> 0.8.1)
51
46
  slop (~> 3.4)
52
- rake (10.4.2)
53
- rest-client (1.8.0)
54
- http-cookie (>= 1.0.2, < 2.0)
55
- mime-types (>= 1.16, < 3.0)
56
- netrc (~> 0.7)
47
+ rake (10.5.0)
57
48
  rspec (3.4.0)
58
49
  rspec-core (~> 3.4.0)
59
50
  rspec-expectations (~> 3.4.0)
60
51
  rspec-mocks (~> 3.4.0)
61
- rspec-core (3.4.1)
52
+ rspec-core (3.4.3)
62
53
  rspec-support (~> 3.4.0)
63
54
  rspec-expectations (3.4.0)
64
55
  diff-lcs (>= 1.2.0, < 2.0)
65
56
  rspec-support (~> 3.4.0)
66
- rspec-mocks (3.4.0)
57
+ rspec-mocks (3.4.1)
67
58
  diff-lcs (>= 1.2.0, < 2.0)
68
59
  rspec-support (~> 3.4.0)
69
60
  rspec-support (3.4.1)
70
- simplecov (0.11.1)
61
+ simplecov (0.11.2)
71
62
  docile (~> 1.1.0)
72
63
  json (~> 1.8)
73
64
  simplecov-html (~> 0.10.0)
@@ -115,9 +106,6 @@ GEM
115
106
  tzinfo (1.2.2)
116
107
  thread_safe (~> 0.1)
117
108
  uber (0.0.15)
118
- unf (0.1.4)
119
- unf_ext
120
- unf_ext (0.0.7.1)
121
109
  unicode_utils (1.4.0)
122
110
  verse (0.4.0)
123
111
  unicode_utils (~> 1.4.0)
data/lib/xcake.rb CHANGED
@@ -1,42 +1,58 @@
1
1
  require "xcake/core_ext/string"
2
2
 
3
- require "xcake/visitable"
4
- require "xcake/visitor"
5
3
  require "xcake/version"
6
-
4
+ require "xcake/ui"
7
5
  require "xcake/informative"
8
-
9
6
  require "xcake/command"
10
7
 
8
+ require "xcake/dependency"
9
+ require "xcake/dependency_provider"
10
+ require "xcake/plugin"
11
+ require "xcake/visitable"
12
+ require "xcake/visitor"
13
+ require "xcake/generator"
14
+ require "xcake/context"
15
+ require "xcake/context/xcodeproj_context"
16
+
11
17
  require "xcake/configuration"
12
18
  require "xcake/configuration/sugar"
13
19
  require "xcake/configuration/proxies/preproccessor_definitions_setting_proxy"
14
20
  require "xcake/configurable"
15
21
 
16
- require "xcake/generator/build_phase"
17
- require "xcake/generator/build_phase/compile_source_build_phase"
18
- require "xcake/generator/build_phase/compile_xcdatamodeld_build_phase"
19
- require "xcake/generator/build_phase/copy_resources_build_phase"
20
- require "xcake/generator/build_phase/copy_xcassets_build_phase"
21
- require "xcake/generator/build_phase/header_file_build_phase"
22
- require "xcake/generator/build_phase_registry"
23
-
24
- require "xcake/generator/configuration"
25
- require "xcake/generator/path"
26
- require "xcake/generator/project"
27
- require "xcake/generator/target"
28
-
29
22
  require "xcake/project"
30
23
  require "xcake/project/sugar"
31
24
  require "xcake/project/hooks"
32
- require "xcake/project_structure_resolver"
25
+ require "xcake/file_reference_installer"
33
26
  require "xcake/node"
27
+ require "xcake/shell_script_build_phase"
34
28
  require "xcake/target"
29
+ require "xcake/target/sugar"
35
30
 
36
31
  require "xcake/xcode/project"
37
32
  require "xcake/xcode/scheme"
38
33
  require "xcake/xcode/scheme_list"
39
34
 
35
+ # TODO: Autoload these
36
+ require "xcake/generator/project_generator"
37
+ require "xcake/generator/project_metadata_generator"
38
+ require "xcake/generator/project_structure_generator"
39
+ require "xcake/generator/scheme_generator"
40
+ require "xcake/generator/target_generator"
41
+ require "xcake/generator/target_dependency_generator"
42
+ require "xcake/generator/target_framework_generator"
43
+ require "xcake/generator/target_build_phase_generator"
44
+
45
+ # TODO: Merge these into one target build phase generator
46
+ require "xcake/generator/target_file_reference_generator"
47
+ require "xcake/generator/target_custom_build_phase_generator"
48
+ require "xcake/generator/configuration_generator"
49
+
50
+ require "xcake/file_reference_installer/compile_source_file_reference_installer"
51
+ require "xcake/file_reference_installer/compile_xcdatamodeld_file_reference_installer"
52
+ require "xcake/file_reference_installer/copy_resources_file_reference_installer"
53
+ require "xcake/file_reference_installer/copy_xcassets_file_reference_installer"
54
+ require "xcake/file_reference_installer/header_file_reference_installer"
55
+
40
56
  module Xcake
41
57
 
42
58
  end
@@ -9,7 +9,7 @@ module Xcake
9
9
  cakefile_contents = File.read(cakefile_path)
10
10
  File.write("Cakefile", cakefile_contents)
11
11
 
12
- puts "Open Cakefile to edit and run xcake bake to get your xcode project"
12
+ puts "Open Cakefile to edit and run xcake make to get your xcode project"
13
13
  end
14
14
  end
15
15
  end
@@ -1,3 +1,6 @@
1
+ require 'molinillo'
2
+
3
+ #TODO: Reduce lines of code here :)
1
4
  module Xcake
2
5
  class Command
3
6
  class Make < Command
@@ -17,11 +20,21 @@ module Xcake
17
20
  project = Project.new
18
21
  project.instance_eval(file_contents)
19
22
 
20
- resolver = ProjectStructureResolver.new
21
- project.accept(resolver)
23
+ context = XcodeprojContext.new
24
+
25
+ #TODO: Debug logs for generator
26
+ repository = Generator.repository
27
+ #puts "Registered Generators #{repository}"
22
28
 
23
- generator = Generator::Project.new
24
- project.accept(generator)
29
+ #TODO: Don't use class as name
30
+ dependency_provider = DependencyProvider.new(repository)
31
+ resolver = Molinillo::Resolver.new(dependency_provider, UI.new)
32
+ resolution = resolver.resolve(Generator.repository)
33
+ resolution.tsort.map do |g|
34
+ #puts "Running #{g.name}..."
35
+ generator = g.name.new(context)
36
+ project.accept(generator)
37
+ end
25
38
  end
26
39
  end
27
40
  end
@@ -112,6 +112,10 @@ module Xcake
112
112
  end
113
113
 
114
114
  if configuration.nil?
115
+ if name.nil?
116
+ name = method.to_s[0].upcase + method.to_s[1..-1]
117
+ end
118
+
115
119
  configuration = Configuration.new(name) do |b|
116
120
  block.call(b) if block_given?
117
121
  end
@@ -0,0 +1,15 @@
1
+ require 'xcodeproj'
2
+
3
+ module Xcake
4
+ module Context
5
+ attr_accessor :object_hash
6
+
7
+ def object_hash
8
+ @object_hash ||= {}
9
+ end
10
+
11
+ def native_object_for(dsl_object)
12
+ object_hash[dsl_object] ||= create_object_for(dsl_object)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,49 @@
1
+ require "xcodeproj"
2
+
3
+ module Xcake
4
+ class XcodeprojContext
5
+
6
+ include Context
7
+
8
+ attr_accessor :project
9
+
10
+ def create_object_for(dsl_object)
11
+ case dsl_object
12
+ when Project
13
+ create_object_for_project(dsl_object)
14
+ when Target
15
+ create_object_for_target(dsl_object)
16
+ when Configuration
17
+ create_object_for_configuration(dsl_object)
18
+ when Node
19
+ create_object_for_node(dsl_object)
20
+ else
21
+ abort "DSL Object not recognized!"
22
+ end
23
+ end
24
+
25
+ def create_object_for_project(project)
26
+ puts "Creating Project..."
27
+
28
+ # TODO: Make setup of project testable
29
+ @project = Xcode::Project.new("./#{project.name}.xcodeproj", true)
30
+ @project.setup_for_xcake
31
+ @project
32
+ end
33
+
34
+ def create_object_for_target(target)
35
+ puts "Creating Target..."
36
+ @project.new_target(target)
37
+ end
38
+
39
+ def create_object_for_configuration(configuration)
40
+ puts "Creating Configuration..."
41
+ @project.new_configuration(configuration)
42
+ end
43
+
44
+ def create_object_for_node(node)
45
+ puts "Creating Group..."
46
+ @project.new_group(node)
47
+ end
48
+ end
49
+ end
@@ -10,4 +10,12 @@ class String
10
10
  def to_c
11
11
  "\\\"#{self}\\\""
12
12
  end
13
+
14
+ # Strips heredoc indents
15
+ #
16
+ def strip_heredoc
17
+ indent = self.scan(/^[ \t]*(?=\S)/).min
18
+ indent_len = (indent || "").length
19
+ self.gsub(/^[ \t]{#{indent_len}}/, "")
20
+ end
13
21
  end
@@ -0,0 +1,23 @@
1
+ require 'xcodeproj'
2
+
3
+ #TODO: Figure out a more robust Dependency system
4
+ # - Needs to handle subclass of subclass.....
5
+ # - Needs to have better mixin hiearchy
6
+
7
+ module Xcake
8
+ module Dependency
9
+ module ClassMethods
10
+ def name
11
+ self
12
+ end
13
+
14
+ def dependencies
15
+ []
16
+ end
17
+ end
18
+
19
+ def self.included(klass)
20
+ klass.extend ClassMethods # Somewhat controversial
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,28 @@
1
+ require 'molinillo'
2
+
3
+ module Xcake
4
+ class DependencyProvider
5
+
6
+ include Molinillo::SpecificationProvider
7
+
8
+ attr_accessor :repository
9
+
10
+ def initialize(repository)
11
+ @repository = repository
12
+ end
13
+
14
+ def name_for(dependency)
15
+ dependency
16
+ end
17
+
18
+ def search_for(dependency)
19
+ @repository.select do |g|
20
+ g == dependency
21
+ end
22
+ end
23
+
24
+ def dependencies_for(specification)
25
+ specification.dependencies
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,54 @@
1
+ module Xcake
2
+ # This generator handles adding nodes
3
+ # to the project and creating a build phase
4
+ # for it.
5
+ #
6
+ class FileReferenceInstaller
7
+
8
+ include Dependency
9
+ include Plugin
10
+ include Visitor
11
+
12
+ attr_accessor :context
13
+
14
+ def initialize(context)
15
+ @context = context
16
+ end
17
+
18
+ # This should be overidden
19
+ # by subclasses.
20
+ #
21
+ # @param [Node] the node
22
+ #
23
+ # @return [Boolean] true if build phase can handle the node.
24
+ #
25
+ def self.can_install_node(node)
26
+ true
27
+ end
28
+
29
+ # Adds file reference to the target.
30
+ #
31
+ # This should be overidden in subclasses
32
+ # to add the file reference the correct
33
+ # build phase.
34
+ #
35
+ # @param [PBXFileReference] the file reference
36
+ #
37
+ # @param [PBXTarget] the xcode target
38
+ #
39
+ def add_file_reference_to_target(_file_reference, _target)
40
+ end
41
+
42
+ # @!group Visitable
43
+
44
+ def visit_node(node)
45
+ native_group = @context.native_object_for(node)
46
+
47
+ file_reference = native_group.new_reference(node.path)
48
+
49
+ node.targets.each do |t|
50
+ add_file_reference_to_target(file_reference, t)
51
+ end
52
+ end
53
+ end
54
+ end