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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -0
- data/Gemfile.lock +11 -23
- data/lib/xcake.rb +34 -18
- data/lib/xcake/command/init.rb +1 -1
- data/lib/xcake/command/make.rb +17 -4
- data/lib/xcake/configurable.rb +4 -0
- data/lib/xcake/context.rb +15 -0
- data/lib/xcake/context/xcodeproj_context.rb +49 -0
- data/lib/xcake/core_ext/string.rb +8 -0
- data/lib/xcake/dependency.rb +23 -0
- data/lib/xcake/dependency_provider.rb +28 -0
- data/lib/xcake/file_reference_installer.rb +54 -0
- data/lib/xcake/file_reference_installer/compile_source_file_reference_installer.rb +16 -0
- data/lib/xcake/file_reference_installer/compile_xcdatamodeld_file_reference_installer.rb +25 -0
- data/lib/xcake/file_reference_installer/copy_resources_file_reference_installer.rb +21 -0
- data/lib/xcake/file_reference_installer/copy_xcassets_file_reference_installer.rb +25 -0
- data/lib/xcake/file_reference_installer/header_file_reference_installer.rb +11 -0
- data/lib/xcake/generator.rb +16 -0
- data/lib/xcake/generator/configuration_generator.rb +36 -0
- data/lib/xcake/generator/project_generator.rb +17 -0
- data/lib/xcake/generator/project_metadata_generator.rb +11 -0
- data/lib/xcake/{project_structure_resolver.rb → generator/project_structure_generator.rb} +1 -6
- data/lib/xcake/generator/scheme_generator.rb +16 -0
- data/lib/xcake/generator/target_build_phase_generator.rb +49 -0
- data/lib/xcake/generator/target_custom_build_phase_generator.rb +16 -0
- data/lib/xcake/generator/target_dependency_generator.rb +15 -0
- data/lib/xcake/generator/target_file_reference_generator.rb +59 -0
- data/lib/xcake/generator/target_framework_generator.rb +14 -0
- data/lib/xcake/generator/target_generator.rb +12 -0
- data/lib/xcake/informative.rb +2 -0
- data/lib/xcake/plugin.rb +25 -0
- data/lib/xcake/project.rb +13 -9
- data/lib/xcake/project/sugar.rb +2 -3
- data/lib/xcake/shell_script_build_phase.rb +15 -0
- data/lib/xcake/target.rb +24 -15
- data/lib/xcake/target/sugar.rb +13 -0
- data/lib/xcake/ui.rb +7 -0
- data/lib/xcake/version.rb +1 -1
- data/lib/xcake/visitor.rb +2 -2
- data/lib/xcake/xcode/project.rb +25 -2
- data/xcake.gemspec +1 -0
- metadata +43 -17
- data/LICENSE +0 -201
- data/lib/fastlane_plugin.rb +0 -5
- data/lib/xcake/generator/build_phase.rb +0 -78
- data/lib/xcake/generator/build_phase/compile_source_build_phase.rb +0 -18
- data/lib/xcake/generator/build_phase/compile_xcdatamodeld_build_phase.rb +0 -20
- data/lib/xcake/generator/build_phase/copy_resources_build_phase.rb +0 -17
- data/lib/xcake/generator/build_phase/copy_xcassets_build_phase.rb +0 -21
- data/lib/xcake/generator/build_phase/header_file_build_phase.rb +0 -13
- data/lib/xcake/generator/build_phase_registry.rb +0 -40
- data/lib/xcake/generator/configuration.rb +0 -46
- data/lib/xcake/generator/path.rb +0 -41
- data/lib/xcake/generator/project.rb +0 -64
- data/lib/xcake/generator/target.rb +0 -48
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d1395ab449d68f8c6752ab847f68c2e792c4a5f
|
4
|
+
data.tar.gz: 4ddc2a92892c9b3055afe502e32a74dea9a0b091
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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.
|
21
|
+
coderay (1.1.1)
|
21
22
|
colored (1.2)
|
22
|
-
coveralls (0.8.
|
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
|
-
|
42
|
-
|
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.
|
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.
|
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.
|
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.
|
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/
|
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
|
data/lib/xcake/command/init.rb
CHANGED
@@ -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
|
12
|
+
puts "Open Cakefile to edit and run xcake make to get your xcode project"
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
data/lib/xcake/command/make.rb
CHANGED
@@ -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
|
-
|
21
|
-
|
23
|
+
context = XcodeprojContext.new
|
24
|
+
|
25
|
+
#TODO: Debug logs for generator
|
26
|
+
repository = Generator.repository
|
27
|
+
#puts "Registered Generators #{repository}"
|
22
28
|
|
23
|
-
|
24
|
-
|
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
|
data/lib/xcake/configurable.rb
CHANGED
@@ -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
|
@@ -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
|