cocoapods 0.33.1 → 0.34.0.rc1
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 +171 -46
- data/README.md +9 -9
- data/bin/pod +5 -5
- data/bin/sandbox-pod +2 -6
- data/lib/cocoapods.rb +4 -4
- data/lib/cocoapods/command.rb +12 -10
- data/lib/cocoapods/command/init.rb +12 -13
- data/lib/cocoapods/command/inter_process_communication.rb +6 -17
- data/lib/cocoapods/command/lib.rb +27 -24
- data/lib/cocoapods/command/list.rb +9 -9
- data/lib/cocoapods/command/outdated.rb +4 -9
- data/lib/cocoapods/command/project.rb +57 -19
- data/lib/cocoapods/command/push.rb +0 -1
- data/lib/cocoapods/command/repo.rb +14 -15
- data/lib/cocoapods/command/repo/push.rb +24 -19
- data/lib/cocoapods/command/search.rb +12 -13
- data/lib/cocoapods/command/setup.rb +10 -9
- data/lib/cocoapods/command/spec.rb +67 -63
- data/lib/cocoapods/config.rb +21 -54
- data/lib/cocoapods/downloader.rb +0 -1
- data/lib/cocoapods/executable.rb +3 -8
- data/lib/cocoapods/external_sources.rb +2 -4
- data/lib/cocoapods/external_sources/abstract_external_source.rb +15 -10
- data/lib/cocoapods/external_sources/downloader_source.rb +0 -2
- data/lib/cocoapods/external_sources/path_source.rb +1 -4
- data/lib/cocoapods/external_sources/podspec_source.rb +1 -3
- data/lib/cocoapods/gem_version.rb +1 -2
- data/lib/cocoapods/generator/acknowledgements.rb +5 -8
- data/lib/cocoapods/generator/acknowledgements/markdown.rb +5 -7
- data/lib/cocoapods/generator/acknowledgements/plist.rb +9 -10
- data/lib/cocoapods/generator/bridge_support.rb +1 -1
- data/lib/cocoapods/generator/copy_resources_script.rb +10 -14
- data/lib/cocoapods/generator/dummy_source.rb +3 -3
- data/lib/cocoapods/generator/prefix_header.rb +15 -16
- data/lib/cocoapods/generator/target_environment_header.rb +122 -36
- data/lib/cocoapods/generator/xcconfig.rb +0 -4
- data/lib/cocoapods/generator/xcconfig/aggregate_xcconfig.rb +74 -65
- data/lib/cocoapods/generator/xcconfig/private_pod_xcconfig.rb +92 -95
- data/lib/cocoapods/generator/xcconfig/public_pod_xcconfig.rb +48 -51
- data/lib/cocoapods/generator/xcconfig/xcconfig_helper.rb +10 -10
- data/lib/cocoapods/hooks/installer_representation.rb +15 -18
- data/lib/cocoapods/hooks/library_representation.rb +4 -8
- data/lib/cocoapods/hooks/pod_representation.rb +1 -5
- data/lib/cocoapods/hooks_manager.rb +63 -0
- data/lib/cocoapods/installer.rb +60 -47
- data/lib/cocoapods/installer/analyzer.rb +60 -62
- data/lib/cocoapods/installer/analyzer/sandbox_analyzer.rb +5 -8
- data/lib/cocoapods/installer/file_references_installer.rb +7 -10
- data/lib/cocoapods/installer/hooks_context.rb +74 -0
- data/lib/cocoapods/installer/migrator.rb +99 -0
- data/lib/cocoapods/installer/pod_source_installer.rb +9 -29
- data/lib/cocoapods/installer/target_installer.rb +7 -17
- data/lib/cocoapods/installer/target_installer/aggregate_target_installer.rb +40 -41
- data/lib/cocoapods/installer/target_installer/pod_target_installer.rb +43 -54
- data/lib/cocoapods/installer/user_project_integrator.rb +54 -10
- data/lib/cocoapods/installer/user_project_integrator/target_integrator.rb +66 -117
- data/lib/cocoapods/installer/user_project_integrator/target_integrator/xcconfig_integrator.rb +116 -0
- data/lib/cocoapods/open_uri.rb +1 -2
- data/lib/cocoapods/project.rb +34 -8
- data/lib/cocoapods/resolver.rb +43 -21
- data/lib/cocoapods/sandbox.rb +80 -75
- data/lib/cocoapods/sandbox/file_accessor.rb +3 -8
- data/lib/cocoapods/sandbox/headers_store.rb +6 -7
- data/lib/cocoapods/sandbox/path_list.rb +7 -10
- data/lib/cocoapods/sources_manager.rb +81 -49
- data/lib/cocoapods/target.rb +18 -12
- data/lib/cocoapods/target/aggregate_target.rb +43 -18
- data/lib/cocoapods/target/pod_target.rb +37 -4
- data/lib/cocoapods/user_interface.rb +19 -18
- data/lib/cocoapods/user_interface/error_report.rb +23 -4
- data/lib/cocoapods/validator.rb +30 -33
- metadata +100 -73
- data/lib/cocoapods/command/help.rb +0 -25
@@ -1,117 +1,114 @@
|
|
1
1
|
module Pod
|
2
2
|
module Generator
|
3
3
|
module XCConfig
|
4
|
-
|
5
|
-
# Generates the private xcconfigs for the pod targets.
|
6
|
-
#
|
7
|
-
# The private xcconfig file for a Pod target merges the configuration
|
8
|
-
# values of the public namespaced xcconfig with the default private
|
9
|
-
# configuration values required by CocoaPods.
|
10
|
-
#
|
11
|
-
class PrivatePodXCConfig
|
12
|
-
|
13
|
-
# @return [Target] the target represented by this xcconfig.
|
4
|
+
# Generates the private xcconfigs for the pod targets.
|
14
5
|
#
|
15
|
-
|
16
|
-
|
17
|
-
#
|
18
|
-
# use.
|
6
|
+
# The private xcconfig file for a Pod target merges the configuration
|
7
|
+
# values of the public namespaced xcconfig with the default private
|
8
|
+
# configuration values required by CocoaPods.
|
19
9
|
#
|
20
|
-
|
10
|
+
class PrivatePodXCConfig
|
11
|
+
# @return [Target] the target represented by this xcconfig.
|
12
|
+
#
|
13
|
+
attr_reader :target
|
21
14
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
@target = target
|
27
|
-
@public_xcconfig = public_xcconfig
|
28
|
-
end
|
15
|
+
# @return [Xcodeproj::Config] The public xcconfig which this one will
|
16
|
+
# use.
|
17
|
+
#
|
18
|
+
attr_reader :public_xcconfig
|
29
19
|
|
30
|
-
|
31
|
-
|
32
|
-
|
20
|
+
# @param [Target] target @see target
|
21
|
+
# @param [Xcodeproj::Config] public_xcconfig @see public_xcconfig
|
22
|
+
#
|
23
|
+
def initialize(target, public_xcconfig)
|
24
|
+
@target = target
|
25
|
+
@public_xcconfig = public_xcconfig
|
26
|
+
end
|
33
27
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
# the path where the prefix header should be stored.
|
38
|
-
#
|
39
|
-
# @return [void]
|
40
|
-
#
|
41
|
-
def save_as(path)
|
42
|
-
generate.save_as(path)
|
43
|
-
end
|
28
|
+
# @return [Xcodeproj::Config] The generated xcconfig.
|
29
|
+
#
|
30
|
+
attr_reader :xcconfig
|
44
31
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
'GCC_PREPROCESSOR_DEFINITIONS' => 'COCOAPODS=1',
|
56
|
-
# 'USE_HEADERMAP' => 'NO'
|
57
|
-
}
|
32
|
+
# Generates and saves the xcconfig to the given path.
|
33
|
+
#
|
34
|
+
# @param [Pathname] path
|
35
|
+
# the path where the prefix header should be stored.
|
36
|
+
#
|
37
|
+
# @return [void]
|
38
|
+
#
|
39
|
+
def save_as(path)
|
40
|
+
generate.save_as(path)
|
41
|
+
end
|
58
42
|
|
59
|
-
|
60
|
-
|
61
|
-
@
|
62
|
-
|
63
|
-
|
43
|
+
# Generates the xcconfig.
|
44
|
+
#
|
45
|
+
# @return [Xcodeproj::Config]
|
46
|
+
#
|
47
|
+
def generate
|
48
|
+
search_paths = target.build_headers.search_paths.concat(target.sandbox.public_headers.search_paths)
|
49
|
+
config = {
|
50
|
+
'OTHER_LDFLAGS' => XCConfigHelper.default_ld_flags(target),
|
51
|
+
'PODS_ROOT' => '${SRCROOT}',
|
52
|
+
'HEADER_SEARCH_PATHS' => XCConfigHelper.quote(search_paths),
|
53
|
+
'GCC_PREPROCESSOR_DEFINITIONS' => '$(inherited) COCOAPODS=1',
|
54
|
+
# 'USE_HEADERMAP' => 'NO'
|
55
|
+
}
|
64
56
|
|
65
|
-
|
57
|
+
xcconfig_hash = add_xcconfig_namespaced_keys(public_xcconfig.to_hash, config, target.xcconfig_prefix)
|
58
|
+
@xcconfig = Xcodeproj::Config.new(xcconfig_hash)
|
59
|
+
@xcconfig.includes = [target.name]
|
60
|
+
@xcconfig
|
61
|
+
end
|
66
62
|
|
67
|
-
|
63
|
+
private
|
68
64
|
|
69
|
-
|
65
|
+
#-----------------------------------------------------------------------#
|
70
66
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
source_config
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
67
|
+
# !@group Private Helpers
|
68
|
+
|
69
|
+
# Returns the hash representation of an xcconfig which inherit from the
|
70
|
+
# namespaced keys of a given one.
|
71
|
+
#
|
72
|
+
# @param [Hash] source_config
|
73
|
+
# The xcconfig whose keys need to be inherited.
|
74
|
+
#
|
75
|
+
# @param [Hash] destination_config
|
76
|
+
# The config which should inherit the source config keys.
|
77
|
+
#
|
78
|
+
# @return [Hash] The inheriting xcconfig.
|
79
|
+
#
|
80
|
+
def add_xcconfig_namespaced_keys(source_config, destination_config, prefix)
|
81
|
+
result = destination_config.dup
|
82
|
+
source_config.each do |key, _value|
|
83
|
+
prefixed_key = prefix + conditional_less_key(key)
|
84
|
+
current_value = destination_config[key]
|
85
|
+
if current_value
|
86
|
+
result[key] = "#{current_value} ${#{prefixed_key}}"
|
87
|
+
else
|
88
|
+
result[key] = "${#{prefixed_key}}"
|
89
|
+
end
|
91
90
|
end
|
91
|
+
result
|
92
92
|
end
|
93
|
-
result
|
94
|
-
end
|
95
93
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
94
|
+
# Strips the [*]-syntax from the given xcconfig key.
|
95
|
+
#
|
96
|
+
# @param [String] key
|
97
|
+
# The key to strip.
|
98
|
+
#
|
99
|
+
# @return [String] The stripped key.
|
100
|
+
#
|
101
|
+
def conditional_less_key(key)
|
102
|
+
brackets_index = key.index('[')
|
103
|
+
if brackets_index
|
104
|
+
key[0...brackets_index]
|
105
|
+
else
|
106
|
+
key
|
107
|
+
end
|
109
108
|
end
|
110
|
-
end
|
111
|
-
|
112
|
-
#-----------------------------------------------------------------------#
|
113
109
|
|
114
|
-
|
110
|
+
#-----------------------------------------------------------------------#
|
111
|
+
end
|
115
112
|
end
|
116
113
|
end
|
117
114
|
end
|
@@ -1,62 +1,59 @@
|
|
1
1
|
module Pod
|
2
2
|
module Generator
|
3
3
|
module XCConfig
|
4
|
+
# Generates the public xcconfigs for the pod targets.
|
5
|
+
#
|
6
|
+
# The public xcconfig file for a Pod is completely namespaced to prevent
|
7
|
+
# configuration value collision with the build settings of other Pods. This
|
8
|
+
# xcconfig includes the standard podspec defined values including
|
9
|
+
# libraries, frameworks, weak frameworks and xcconfig overrides.
|
10
|
+
#
|
11
|
+
class PublicPodXCConfig
|
12
|
+
# @return [Target] the target represented by this xcconfig.
|
13
|
+
#
|
14
|
+
attr_reader :target
|
15
|
+
|
16
|
+
# @param [Target] target @see target
|
17
|
+
#
|
18
|
+
def initialize(target)
|
19
|
+
@target = target
|
20
|
+
end
|
4
21
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
#
|
20
|
-
def initialize(target)
|
21
|
-
@target = target
|
22
|
-
end
|
23
|
-
|
24
|
-
# @return [Xcodeproj::Config] The generated xcconfig.
|
25
|
-
#
|
26
|
-
attr_reader :xcconfig
|
27
|
-
|
28
|
-
# Generates and saves the xcconfig to the given path.
|
29
|
-
#
|
30
|
-
# @param [Pathname] path
|
31
|
-
# the path where the prefix header should be stored.
|
32
|
-
#
|
33
|
-
# @return [void]
|
34
|
-
#
|
35
|
-
def save_as(path)
|
36
|
-
generate.save_as(path, target.xcconfig_prefix)
|
37
|
-
end
|
22
|
+
# @return [Xcodeproj::Config] The generated xcconfig.
|
23
|
+
#
|
24
|
+
attr_reader :xcconfig
|
25
|
+
|
26
|
+
# Generates and saves the xcconfig to the given path.
|
27
|
+
#
|
28
|
+
# @param [Pathname] path
|
29
|
+
# the path where the prefix header should be stored.
|
30
|
+
#
|
31
|
+
# @return [void]
|
32
|
+
#
|
33
|
+
def save_as(path)
|
34
|
+
generate.save_as(path, target.xcconfig_prefix)
|
35
|
+
end
|
38
36
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
37
|
+
# Generates the xcconfig for the target.
|
38
|
+
#
|
39
|
+
# @return [Xcodeproj::Config]
|
40
|
+
#
|
41
|
+
def generate
|
42
|
+
@xcconfig = Xcodeproj::Config.new
|
43
|
+
target.file_accessors.each do |file_accessor|
|
44
|
+
XCConfigHelper.add_spec_build_settings_to_xcconfig(file_accessor.spec_consumer, @xcconfig)
|
45
|
+
file_accessor.vendored_frameworks.each do |vendored_framework|
|
46
|
+
XCConfigHelper.add_framework_build_settings(vendored_framework, @xcconfig, target.sandbox.root)
|
47
|
+
end
|
48
|
+
file_accessor.vendored_libraries.each do |vendored_library|
|
49
|
+
XCConfigHelper.add_library_build_settings(vendored_library, @xcconfig, target.sandbox.root)
|
50
|
+
end
|
52
51
|
end
|
52
|
+
@xcconfig
|
53
53
|
end
|
54
|
-
@xcconfig
|
55
|
-
end
|
56
54
|
|
57
|
-
|
58
|
-
|
59
|
-
end
|
55
|
+
#-----------------------------------------------------------------------#
|
56
|
+
end
|
60
57
|
end
|
61
58
|
end
|
62
59
|
end
|
@@ -1,11 +1,9 @@
|
|
1
1
|
module Pod
|
2
2
|
module Generator
|
3
3
|
module XCConfig
|
4
|
-
|
5
4
|
# Stores the shared logic of the classes of the XCConfig module.
|
6
5
|
#
|
7
6
|
module XCConfigHelper
|
8
|
-
|
9
7
|
# Converts an array of strings to a single string where the each string
|
10
8
|
# is surrounded by double quotes and separated by a space. Used to
|
11
9
|
# represent strings in a xcconfig file.
|
@@ -19,7 +17,7 @@ module Pod
|
|
19
17
|
#
|
20
18
|
def self.quote(strings, prefix = nil)
|
21
19
|
prefix = "#{prefix} " if prefix
|
22
|
-
strings.sort.map { |s| %W
|
20
|
+
strings.sort.map { |s| %W( #{prefix}"#{s}" ) }.join(' ')
|
23
21
|
end
|
24
22
|
|
25
23
|
# @return [String] the default linker flags. `-ObjC` is always included
|
@@ -28,8 +26,8 @@ module Pod
|
|
28
26
|
#
|
29
27
|
def self.default_ld_flags(target)
|
30
28
|
ld_flags = '-ObjC'
|
31
|
-
if target.target_definition.podfile.set_arc_compatibility_flag?
|
32
|
-
target.spec_consumers.any?
|
29
|
+
if target.target_definition.podfile.set_arc_compatibility_flag? &&
|
30
|
+
target.spec_consumers.any?(&:requires_arc?)
|
33
31
|
ld_flags << ' -fobjc-arc'
|
34
32
|
end
|
35
33
|
ld_flags
|
@@ -62,11 +60,11 @@ module Pod
|
|
62
60
|
# The xcconfig to edit.
|
63
61
|
#
|
64
62
|
def self.add_framework_build_settings(framework_path, xcconfig, sandbox_root)
|
65
|
-
name = File.basename(framework_path,
|
63
|
+
name = File.basename(framework_path, '.framework')
|
66
64
|
dirname = '$(PODS_ROOT)/' + framework_path.dirname.relative_path_from(sandbox_root).to_s
|
67
65
|
build_settings = {
|
68
66
|
'OTHER_LDFLAGS' => "-framework #{name}",
|
69
|
-
'FRAMEWORK_SEARCH_PATHS' => quote([dirname])
|
67
|
+
'FRAMEWORK_SEARCH_PATHS' => quote([dirname]),
|
70
68
|
}
|
71
69
|
xcconfig.merge!(build_settings)
|
72
70
|
end
|
@@ -81,11 +79,11 @@ module Pod
|
|
81
79
|
# The xcconfig to edit.
|
82
80
|
#
|
83
81
|
def self.add_library_build_settings(library_path, xcconfig, sandbox_root)
|
84
|
-
name = File.basename(library_path,
|
82
|
+
name = File.basename(library_path, '.a').sub(/\Alib/, '')
|
85
83
|
dirname = '$(PODS_ROOT)/' + library_path.dirname.relative_path_from(sandbox_root).to_s
|
86
84
|
build_settings = {
|
87
85
|
'OTHER_LDFLAGS' => "-l#{name}",
|
88
|
-
'LIBRARY_SEARCH_PATHS' => quote([dirname])
|
86
|
+
'LIBRARY_SEARCH_PATHS' => quote([dirname]),
|
89
87
|
}
|
90
88
|
xcconfig.merge!(build_settings)
|
91
89
|
end
|
@@ -101,7 +99,7 @@ module Pod
|
|
101
99
|
# @return [void]
|
102
100
|
#
|
103
101
|
def self.add_developers_frameworks_if_needed(xcconfig, platform)
|
104
|
-
matched_frameworks = xcconfig.frameworks &
|
102
|
+
matched_frameworks = xcconfig.frameworks & %w(XCTest SenTestingKit)
|
105
103
|
unless matched_frameworks.empty?
|
106
104
|
search_paths = xcconfig.attributes['FRAMEWORK_SEARCH_PATHS'] ||= ''
|
107
105
|
search_paths_to_add = []
|
@@ -111,6 +109,8 @@ module Pod
|
|
111
109
|
else
|
112
110
|
search_paths_to_add << '"$(DEVELOPER_LIBRARY_DIR)/Frameworks"'
|
113
111
|
end
|
112
|
+
frameworks_path = '"$(PLATFORM_DIR)/Developer/Library/Frameworks"'
|
113
|
+
search_paths_to_add << frameworks_path
|
114
114
|
search_paths_to_add.each do |search_path|
|
115
115
|
unless search_paths.include?(search_path)
|
116
116
|
search_paths << ' ' unless search_paths.empty?
|
@@ -1,28 +1,27 @@
|
|
1
1
|
module Pod
|
2
|
-
|
2
|
+
# @todo: Remove by CocoaPods 1.0
|
3
|
+
#
|
3
4
|
class Podfile
|
4
5
|
def config
|
5
|
-
UI.warn
|
6
|
-
|
6
|
+
UI.warn 'Podfile#config is deprecated. The config is accessible from ' \
|
7
|
+
'the parameter passed to the hooks'
|
7
8
|
Config.instance
|
8
9
|
end
|
9
|
-
end
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
11
|
+
class TargetDefinition
|
12
|
+
def copy_resources_script_name
|
13
|
+
UI.warn 'TargetDefinition#copy_resources_script_name is deprecated. ' \
|
14
|
+
'The value is accessible directly from the representation of the ' \
|
15
|
+
'library using the #copy_resources_script_path method.'
|
16
|
+
Config.instance.sandbox.root + "#{label}-resources.sh"
|
17
|
+
end
|
17
18
|
end
|
18
19
|
end
|
19
20
|
|
20
21
|
module Hooks
|
21
|
-
|
22
22
|
# The installer representation to pass to the hooks.
|
23
23
|
#
|
24
24
|
class InstallerRepresentation
|
25
|
-
|
26
25
|
public
|
27
26
|
|
28
27
|
# @!group Public Hooks API
|
@@ -79,15 +78,16 @@ module Pod
|
|
79
78
|
end
|
80
79
|
|
81
80
|
#-----------------------------------------------------------------------#
|
81
|
+
|
82
82
|
public
|
83
83
|
|
84
84
|
# @!group Compatibility
|
85
85
|
#
|
86
86
|
# The following aliases provides compatibility with CP < 0.17
|
87
87
|
|
88
|
-
|
89
|
-
|
90
|
-
|
88
|
+
alias_method :target_installers, :libraries
|
89
|
+
alias_method :specs_by_target, :specs_by_lib
|
90
|
+
alias_method :local_pods_by_target, :pods_by_lib
|
91
91
|
|
92
92
|
#-----------------------------------------------------------------------#
|
93
93
|
|
@@ -126,9 +126,6 @@ module Pod
|
|
126
126
|
end
|
127
127
|
|
128
128
|
#-----------------------------------------------------------------------#
|
129
|
-
|
130
129
|
end
|
131
130
|
end
|
132
131
|
end
|
133
|
-
|
134
|
-
|