xcake 0.5.3 → 0.6.2

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