cocoapods 0.37.1 → 0.37.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 +29 -0
- data/lib/cocoapods/command/outdated.rb +2 -0
- data/lib/cocoapods/command/repo/lint.rb +2 -0
- data/lib/cocoapods/command/repo/push.rb +9 -3
- data/lib/cocoapods/command/spec/edit.rb +7 -0
- data/lib/cocoapods/config.rb +12 -0
- data/lib/cocoapods/downloader/cache.rb +8 -3
- data/lib/cocoapods/downloader/request.rb +5 -0
- data/lib/cocoapods/executable.rb +9 -1
- data/lib/cocoapods/external_sources.rb +13 -0
- data/lib/cocoapods/external_sources/abstract_external_source.rb +8 -1
- data/lib/cocoapods/gem_version.rb +1 -1
- data/lib/cocoapods/generator/copy_resources_script.rb +7 -3
- data/lib/cocoapods/generator/header.rb +2 -0
- data/lib/cocoapods/generator/info_plist_file.rb +2 -0
- data/lib/cocoapods/generator/module_map.rb +5 -3
- data/lib/cocoapods/generator/prefix_header.rb +2 -0
- data/lib/cocoapods/generator/target_environment_header.rb +1 -4
- data/lib/cocoapods/generator/umbrella_header.rb +2 -0
- data/lib/cocoapods/generator/xcconfig/aggregate_xcconfig.rb +3 -1
- data/lib/cocoapods/generator/xcconfig/private_pod_xcconfig.rb +2 -0
- data/lib/cocoapods/generator/xcconfig/public_pod_xcconfig.rb +2 -0
- data/lib/cocoapods/generator/xcconfig/xcconfig_helper.rb +14 -7
- data/lib/cocoapods/hooks/installer_representation.rb +2 -0
- data/lib/cocoapods/hooks/library_representation.rb +4 -2
- data/lib/cocoapods/hooks/pod_representation.rb +6 -6
- data/lib/cocoapods/hooks_manager.rb +2 -0
- data/lib/cocoapods/installer.rb +43 -2
- data/lib/cocoapods/installer/analyzer.rb +16 -3
- data/lib/cocoapods/installer/analyzer/sandbox_analyzer.rb +3 -1
- data/lib/cocoapods/installer/file_references_installer.rb +3 -1
- data/lib/cocoapods/installer/hooks_context.rb +9 -0
- data/lib/cocoapods/installer/migrator.rb +22 -1
- data/lib/cocoapods/installer/pod_source_installer.rb +16 -8
- data/lib/cocoapods/installer/pod_source_preparer.rb +2 -0
- data/lib/cocoapods/installer/user_project_integrator.rb +4 -2
- data/lib/cocoapods/installer/user_project_integrator/target_integrator.rb +6 -2
- data/lib/cocoapods/open_uri.rb +8 -0
- data/lib/cocoapods/project.rb +3 -1
- data/lib/cocoapods/resolver.rb +10 -10
- data/lib/cocoapods/sandbox.rb +4 -0
- data/lib/cocoapods/sandbox/file_accessor.rb +3 -1
- data/lib/cocoapods/sandbox/headers_store.rb +4 -4
- data/lib/cocoapods/sandbox/path_list.rb +25 -6
- data/lib/cocoapods/sources_manager.rb +3 -1
- data/lib/cocoapods/target.rb +1 -1
- data/lib/cocoapods/target/aggregate_target.rb +8 -2
- data/lib/cocoapods/user_interface.rb +62 -0
- data/lib/cocoapods/validator.rb +6 -2
- metadata +34 -33
@@ -61,7 +61,7 @@ module Pod
|
|
61
61
|
#
|
62
62
|
attr_reader :sandbox
|
63
63
|
|
64
|
-
# @return [
|
64
|
+
# @return [Target] The library whose target needs to be generated.
|
65
65
|
#
|
66
66
|
attr_reader :library
|
67
67
|
|
@@ -76,8 +76,10 @@ module Pod
|
|
76
76
|
|
77
77
|
# @!group Private implementation
|
78
78
|
|
79
|
+
# Initialize a new instance
|
80
|
+
#
|
79
81
|
# @param [Sandbox] sandbox @see sandbox
|
80
|
-
# @param [
|
82
|
+
# @param [Target] library @see library
|
81
83
|
#
|
82
84
|
def initialize(sandbox, library)
|
83
85
|
@sandbox = sandbox
|
@@ -11,35 +11,35 @@ module Pod
|
|
11
11
|
# Stores the information of the Installer for the hooks
|
12
12
|
#
|
13
13
|
class PodRepresentation
|
14
|
-
# @return [String]
|
14
|
+
# @return [String] the name of the pod
|
15
15
|
#
|
16
16
|
attr_accessor :name
|
17
17
|
|
18
|
-
# @return [Version]
|
18
|
+
# @return [Version] the version
|
19
19
|
#
|
20
20
|
def version
|
21
21
|
root_spec.version
|
22
22
|
end
|
23
23
|
|
24
|
-
# @return [Specification]
|
24
|
+
# @return [Specification] the root spec
|
25
25
|
#
|
26
26
|
def root_spec
|
27
27
|
file_accessors.first.spec.root
|
28
28
|
end
|
29
29
|
|
30
|
-
# @return [Array<Specification>]
|
30
|
+
# @return [Array<Specification>] the specs
|
31
31
|
#
|
32
32
|
def specs
|
33
33
|
file_accessors.map(&:spec).uniq
|
34
34
|
end
|
35
35
|
|
36
|
-
# @return [Pathname]
|
36
|
+
# @return [Pathname] the root path
|
37
37
|
#
|
38
38
|
def root
|
39
39
|
file_accessors.first.path_list.root
|
40
40
|
end
|
41
41
|
|
42
|
-
# @return [Array<Pathname>]
|
42
|
+
# @return [Array<Pathname>] the source files
|
43
43
|
#
|
44
44
|
def source_files
|
45
45
|
file_accessors.map(&:source_files).flatten.uniq
|
data/lib/cocoapods/installer.rb
CHANGED
@@ -55,6 +55,8 @@ module Pod
|
|
55
55
|
#
|
56
56
|
attr_reader :lockfile
|
57
57
|
|
58
|
+
# Initialize a new instance
|
59
|
+
#
|
58
60
|
# @param [Sandbox] sandbox @see sandbox
|
59
61
|
# @param [Podfile] podfile @see podfile
|
60
62
|
# @param [Lockfile] lockfile @see lockfile
|
@@ -122,6 +124,7 @@ module Pod
|
|
122
124
|
install_pod_sources
|
123
125
|
run_pre_install_hooks
|
124
126
|
clean_pod_sources
|
127
|
+
lock_pod_sources
|
125
128
|
end
|
126
129
|
end
|
127
130
|
|
@@ -133,6 +136,7 @@ module Pod
|
|
133
136
|
set_target_dependencies
|
134
137
|
run_podfile_post_install_hooks
|
135
138
|
write_pod_project
|
139
|
+
share_development_pod_schemes
|
136
140
|
write_lockfiles
|
137
141
|
end
|
138
142
|
end
|
@@ -171,6 +175,8 @@ module Pod
|
|
171
175
|
|
172
176
|
# @!group Installation steps
|
173
177
|
|
178
|
+
# Performs the analysis.
|
179
|
+
#
|
174
180
|
# @return [void]
|
175
181
|
#
|
176
182
|
# @note The warning about the version of the Lockfile doesn't use the
|
@@ -316,6 +322,16 @@ module Pod
|
|
316
322
|
@pod_installers.each(&:clean!)
|
317
323
|
end
|
318
324
|
|
325
|
+
# Locks the sources of the Pods if the config instructs to do so.
|
326
|
+
#
|
327
|
+
# @todo Why the @pod_installers might be empty?
|
328
|
+
#
|
329
|
+
def lock_pod_sources
|
330
|
+
return unless config.lock_pod_source?
|
331
|
+
return unless @pod_installers
|
332
|
+
@pod_installers.each(&:lock_files!)
|
333
|
+
end
|
334
|
+
|
319
335
|
# Determines if the dependencies need to be built as dynamic frameworks or
|
320
336
|
# if they can be built as static libraries by checking for the Swift source
|
321
337
|
# presence. Therefore it is important that the file accessors of the
|
@@ -589,6 +605,20 @@ module Pod
|
|
589
605
|
end
|
590
606
|
end
|
591
607
|
|
608
|
+
# Shares schemes of development Pods.
|
609
|
+
#
|
610
|
+
# @return [void]
|
611
|
+
#
|
612
|
+
def share_development_pod_schemes
|
613
|
+
development_pod_targets = sandbox.development_pods.keys.map do |pod|
|
614
|
+
pods_project.targets.select { |target| target.name =~ /^Pods-.*-#{pod}$/ }
|
615
|
+
end.flatten
|
616
|
+
|
617
|
+
development_pod_targets.each do |pod_target|
|
618
|
+
Xcodeproj::XCScheme.share_scheme(pods_project.path, pod_target.name)
|
619
|
+
end
|
620
|
+
end
|
621
|
+
|
592
622
|
# Writes the Podfile and the lock files.
|
593
623
|
#
|
594
624
|
# @todo Pass the checkout options to the Lockfile.
|
@@ -696,18 +726,20 @@ module Pod
|
|
696
726
|
|
697
727
|
# @!group Hooks Data
|
698
728
|
|
729
|
+
# Creates a hook representation for this installer.
|
730
|
+
#
|
699
731
|
# @return [InstallerRepresentation]
|
700
732
|
#
|
701
733
|
def installer_rep
|
702
734
|
Hooks::InstallerRepresentation.new(self)
|
703
735
|
end
|
704
736
|
|
705
|
-
#
|
737
|
+
# Creates a hook representation for a Pod.
|
706
738
|
#
|
707
739
|
# @param [String] pod
|
708
740
|
# The name of the pod.
|
709
741
|
#
|
710
|
-
# @return [PodRepresentation]
|
742
|
+
# @return [PodRepresentation]
|
711
743
|
#
|
712
744
|
def pod_rep(pod)
|
713
745
|
all_file_accessors = pod_targets.map(&:file_accessors).flatten.compact
|
@@ -715,18 +747,27 @@ module Pod
|
|
715
747
|
Hooks::PodRepresentation.new(pod, file_accessors)
|
716
748
|
end
|
717
749
|
|
750
|
+
# Creates a hook representation for a given aggregate target.
|
751
|
+
#
|
752
|
+
# @param [AggregateTarget] aggregate_target
|
753
|
+
# the aggregate target
|
754
|
+
#
|
718
755
|
# @return [LibraryRepresentation]
|
719
756
|
#
|
720
757
|
def library_rep(aggregate_target)
|
721
758
|
Hooks::LibraryRepresentation.new(sandbox, aggregate_target)
|
722
759
|
end
|
723
760
|
|
761
|
+
# Creates hook representations for all aggregate targets.
|
762
|
+
#
|
724
763
|
# @return [Array<LibraryRepresentation>]
|
725
764
|
#
|
726
765
|
def library_reps
|
727
766
|
@library_reps ||= aggregate_targets.map { |lib| library_rep(lib) }
|
728
767
|
end
|
729
768
|
|
769
|
+
# Creates hook representations for all #root_specs.
|
770
|
+
#
|
730
771
|
# @return [Array<PodRepresentation>]
|
731
772
|
#
|
732
773
|
def pod_reps
|
@@ -24,6 +24,8 @@ module Pod
|
|
24
24
|
#
|
25
25
|
attr_reader :lockfile
|
26
26
|
|
27
|
+
# Initialize a new instance
|
28
|
+
#
|
27
29
|
# @param [Sandbox] sandbox @see sandbox
|
28
30
|
# @param [Podfile] podfile @see podfile
|
29
31
|
# @param [Lockfile] lockfile @see lockfile
|
@@ -44,6 +46,9 @@ module Pod
|
|
44
46
|
# compute which specification should be installed. The manifest of the
|
45
47
|
# sandbox returns which specifications are installed.
|
46
48
|
#
|
49
|
+
# @param [Bool] allow_fetches
|
50
|
+
# whether external sources may be fetched
|
51
|
+
#
|
47
52
|
# @return [AnalysisResult]
|
48
53
|
#
|
49
54
|
def analyze(allow_fetches = true)
|
@@ -72,6 +77,9 @@ module Pod
|
|
72
77
|
podfile_needs_install?(analysis_result) || sandbox_needs_install?(analysis_result)
|
73
78
|
end
|
74
79
|
|
80
|
+
# @param [AnalysisResult] analysis_result
|
81
|
+
# the analysis result to check for changes
|
82
|
+
#
|
75
83
|
# @return [Bool] Whether the podfile has changes respect to the lockfile.
|
76
84
|
#
|
77
85
|
def podfile_needs_install?(analysis_result)
|
@@ -80,6 +88,9 @@ module Pod
|
|
80
88
|
!needing_install.empty?
|
81
89
|
end
|
82
90
|
|
91
|
+
# @param [AnalysisResult] analysis_result
|
92
|
+
# the analysis result to check for changes
|
93
|
+
#
|
83
94
|
# @return [Bool] Whether the sandbox is in synch with the lockfile.
|
84
95
|
#
|
85
96
|
def sandbox_needs_install?(analysis_result)
|
@@ -181,7 +192,7 @@ module Pod
|
|
181
192
|
|
182
193
|
# Creates the models that represent the libraries generated by CocoaPods.
|
183
194
|
#
|
184
|
-
# @return [Array<
|
195
|
+
# @return [Array<Target>] the generated libraries.
|
185
196
|
#
|
186
197
|
def generate_targets
|
187
198
|
targets = []
|
@@ -757,6 +768,8 @@ module Pod
|
|
757
768
|
# subspecs are added instead of the name of the Pods.
|
758
769
|
#
|
759
770
|
class SpecsState
|
771
|
+
# Initialize a new instance
|
772
|
+
#
|
760
773
|
# @param [Hash{Symbol=>String}] pods_by_state
|
761
774
|
# The name of the pods grouped by their state
|
762
775
|
# (`:added`, `:removed`, `:changed` or `:unchanged`).
|
@@ -804,10 +817,10 @@ module Pod
|
|
804
817
|
|
805
818
|
# Adds the name of a Pod to the give state.
|
806
819
|
#
|
807
|
-
# @param [String]
|
820
|
+
# @param [String] name
|
808
821
|
# the name of the Pod.
|
809
822
|
#
|
810
|
-
# @param [Symbol]
|
823
|
+
# @param [Symbol] state
|
811
824
|
# the state of the Pod.
|
812
825
|
#
|
813
826
|
# @return [void]
|
@@ -51,6 +51,8 @@ module Pod
|
|
51
51
|
#
|
52
52
|
attr_reader :lockfile
|
53
53
|
|
54
|
+
# Init a new SandboxAnalyzer
|
55
|
+
#
|
54
56
|
# @param [Sandbox] sandbox @see sandbox
|
55
57
|
# @param [Array<Specifications>] specs @see specs
|
56
58
|
# @param [Bool] update_mode @see update_mode
|
@@ -66,7 +68,7 @@ module Pod
|
|
66
68
|
# Performs the analysis to the detect the state of the sandbox respect
|
67
69
|
# to the resolved specifications.
|
68
70
|
#
|
69
|
-
# @return [
|
71
|
+
# @return [void]
|
70
72
|
#
|
71
73
|
def analyze
|
72
74
|
state = SpecsState.new
|
@@ -16,6 +16,8 @@ module Pod
|
|
16
16
|
#
|
17
17
|
attr_reader :pods_project
|
18
18
|
|
19
|
+
# Initialize a new instance
|
20
|
+
#
|
19
21
|
# @param [Sandbox] sandbox @see sandbox
|
20
22
|
# @param [Array<PodTarget>] libraries @see libraries
|
21
23
|
# @param [Project] libraries @see libraries
|
@@ -153,7 +155,7 @@ module Pod
|
|
153
155
|
# The key of the group of the Pods project.
|
154
156
|
#
|
155
157
|
# @param [Bool] reflect_file_system_structure_for_development
|
156
|
-
#
|
158
|
+
# Whether organizing a local pod's files in subgroups inside
|
157
159
|
# the pod's group is allowed.
|
158
160
|
#
|
159
161
|
# @return [void]
|
@@ -13,6 +13,15 @@ module Pod
|
|
13
13
|
#
|
14
14
|
attr_accessor :umbrella_targets
|
15
15
|
|
16
|
+
# Generate a {HooksContext}.
|
17
|
+
#
|
18
|
+
# @param [Sandbox] sandbox
|
19
|
+
# The sandbox
|
20
|
+
#
|
21
|
+
# @param [Array<AggregateTarget>] aggregate_targets
|
22
|
+
# The aggregate targets, which will been presented by an adequate
|
23
|
+
# {UmbrellaTargetDescription} in the generated context.
|
24
|
+
#
|
16
25
|
# @return [HooksContext] Convenience class method to generate the
|
17
26
|
# static context.
|
18
27
|
#
|
@@ -8,7 +8,8 @@ module Pod
|
|
8
8
|
class << self
|
9
9
|
# Performs the migration.
|
10
10
|
#
|
11
|
-
# @param [Sandbox]
|
11
|
+
# @param [Sandbox] sandbox
|
12
|
+
# The sandbox which should be migrated.
|
12
13
|
#
|
13
14
|
def migrate(sandbox)
|
14
15
|
if sandbox.manifest
|
@@ -21,6 +22,8 @@ module Pod
|
|
21
22
|
|
22
23
|
# Migrates from CocoaPods versions previous to 0.34.
|
23
24
|
#
|
25
|
+
# @param [Sandbox] sandbox
|
26
|
+
#
|
24
27
|
def migrate_to_0_34(sandbox)
|
25
28
|
UI.message('Migrating to CocoaPods 0.34') do
|
26
29
|
delete(sandbox.root + 'Headers')
|
@@ -49,6 +52,8 @@ module Pod
|
|
49
52
|
|
50
53
|
# Migrates from CocoaPods versions prior to 0.36.
|
51
54
|
#
|
55
|
+
# @param [Sandbox] sandbox
|
56
|
+
#
|
52
57
|
def migrate_to_0_36(sandbox)
|
53
58
|
UI.message('Migrating to CocoaPods 0.36') do
|
54
59
|
move(sandbox.root + 'Headers/Build', sandbox.root + 'Headers/Private')
|
@@ -69,6 +74,16 @@ module Pod
|
|
69
74
|
|
70
75
|
# @!group Private helpers
|
71
76
|
|
77
|
+
# Check whether a migration is required
|
78
|
+
#
|
79
|
+
# @param [#to_s] target_version
|
80
|
+
# See Version#new.
|
81
|
+
#
|
82
|
+
# @param [Sandbox] sandbox
|
83
|
+
# The sandbox
|
84
|
+
#
|
85
|
+
# @return [void]
|
86
|
+
#
|
72
87
|
def installation_minor?(target_version, sandbox)
|
73
88
|
sandbox.manifest.cocoapods_version < Version.new(target_version)
|
74
89
|
end
|
@@ -79,6 +94,8 @@ module Pod
|
|
79
94
|
# @path [#to_s] path
|
80
95
|
# The path.
|
81
96
|
#
|
97
|
+
# @return [void]
|
98
|
+
#
|
82
99
|
def make_path(path)
|
83
100
|
return if path.exist?
|
84
101
|
UI.message "- Making path #{UI.path(path)}" do
|
@@ -94,6 +111,8 @@ module Pod
|
|
94
111
|
# @path [#to_s] destination
|
95
112
|
# The destination path.
|
96
113
|
#
|
114
|
+
# @return [void]
|
115
|
+
#
|
97
116
|
def move(source, destination)
|
98
117
|
return unless source.exist?
|
99
118
|
make_path(destination.dirname)
|
@@ -108,6 +127,8 @@ module Pod
|
|
108
127
|
# @path [#to_s] path
|
109
128
|
# The path.
|
110
129
|
#
|
130
|
+
# @return [void]
|
131
|
+
#
|
111
132
|
def delete(path)
|
112
133
|
return unless path.exist?
|
113
134
|
UI.message "- Deleting #{UI.path(path)}" do
|
@@ -8,7 +8,7 @@ module Pod
|
|
8
8
|
# @note This class needs to consider all the activated specs of a Pod.
|
9
9
|
#
|
10
10
|
class PodSourceInstaller
|
11
|
-
# @return [Sandbox]
|
11
|
+
# @return [Sandbox] The installation target.
|
12
12
|
#
|
13
13
|
attr_reader :sandbox
|
14
14
|
|
@@ -17,6 +17,8 @@ module Pod
|
|
17
17
|
#
|
18
18
|
attr_reader :specs_by_platform
|
19
19
|
|
20
|
+
# Initialize a new instance
|
21
|
+
#
|
20
22
|
# @param [Sandbox] sandbox @see sandbox
|
21
23
|
# @param [Hash{Symbol=>Array}] specs_by_platform @see specs_by_platform
|
22
24
|
#
|
@@ -44,7 +46,6 @@ module Pod
|
|
44
46
|
def install!
|
45
47
|
download_source unless predownloaded? || local?
|
46
48
|
PodSourcePreparer.new(root_spec, root).prepare! if local?
|
47
|
-
lock_files!
|
48
49
|
end
|
49
50
|
|
50
51
|
# Cleans the installations if appropriate.
|
@@ -58,7 +59,18 @@ module Pod
|
|
58
59
|
clean_installation unless local?
|
59
60
|
end
|
60
61
|
|
61
|
-
#
|
62
|
+
# Locks the source files if appropriate.
|
63
|
+
#
|
64
|
+
# @todo As the pre install hooks need to run before cleaning this
|
65
|
+
# method should be refactored.
|
66
|
+
#
|
67
|
+
# @return [void]
|
68
|
+
#
|
69
|
+
def lock_files!
|
70
|
+
lock_installation unless local?
|
71
|
+
end
|
72
|
+
|
73
|
+
# @return [Hash] @see Downloader#checkout_options
|
62
74
|
#
|
63
75
|
attr_reader :specific_source
|
64
76
|
|
@@ -95,11 +107,7 @@ module Pod
|
|
95
107
|
#
|
96
108
|
# @return [void]
|
97
109
|
#
|
98
|
-
def
|
99
|
-
if local?
|
100
|
-
return
|
101
|
-
end
|
102
|
-
|
110
|
+
def lock_installation
|
103
111
|
# We don't want to lock diretories, as that forces you to override
|
104
112
|
# those permissions if you decide to delete the Pods folder.
|
105
113
|
Dir.glob(root + '**/*').each do |file|
|