cocoapods-cafswitcher 0.0.11 → 0.0.12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/cocoapods-cafswitcher/Main.rb +60 -44
- data/lib/cocoapods-cafswitcher/gem_version.rb +1 -1
- data/lib/cocoapods-cafswitcher/podfile_switch.rb +113 -37
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f4cb2218088b7d582c2096ff569b5b76fa713a778e11753091070153738fc35d
|
4
|
+
data.tar.gz: de86507394b201e011239d135392e6924c6c5800df6175633ec82fc90e907822
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 607aa67ef50f0065f9979fd57bb531d640560bb53448a0233c02ca1ad8dce4ff228e01eee30fd80537b1765a5c45945bf55437b5ad739f671bc560bd62a0bf08
|
7
|
+
data.tar.gz: 4475e8ae542181376dc1818a61ad6cfda5a517d31af8d6a4071d04930e8ebe290ba432a295e2fd709ad0aae4a4ec8a8a5060f79ed578557cb73963cc3e5b44ae
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
-
# encoding: UTF-8
|
2
1
|
require 'fileutils'
|
3
2
|
require 'yaml'
|
4
3
|
require 'pathname'
|
4
|
+
require 'cocoapods/downloader'
|
5
|
+
require 'cocoapods/config'
|
5
6
|
|
6
7
|
require_relative('podfile_switch')
|
7
8
|
|
@@ -41,21 +42,22 @@ Pod::HooksManager.register('cocoapods-cafswitcher', :pre_install) do |installer_
|
|
41
42
|
|
42
43
|
if ENV['IS_ARCHIVE']
|
43
44
|
ENV.delete('IS_ARCHIVE')
|
44
|
-
|
45
|
-
setEnv(name,
|
45
|
+
allNames.each do |name|
|
46
|
+
setEnv(name, '_ARCHIVE')
|
46
47
|
# ENV["#{name}_ARCHIVE"] = '1'
|
47
48
|
end
|
48
49
|
elsif ENV['IS_SOURCE']
|
49
50
|
ENV.delete('IS_SOURCE')
|
50
|
-
|
51
|
-
setEnv(name,
|
51
|
+
allNames.each do |name|
|
52
|
+
setEnv(name, '_SOURCE')
|
52
53
|
# ENV["#{name}_SOURCE"] = '1'
|
54
|
+
Pod::Podfile.tmpSourceList << name
|
53
55
|
end
|
54
56
|
end
|
55
57
|
|
56
58
|
# 对于git和path的直接设置成源码
|
57
|
-
|
58
|
-
currentSourceList = currentSourceList << name
|
59
|
+
needUpdatePodList.each do |name|
|
60
|
+
currentSourceList = currentSourceList << name unless currentSourceList.include?(name)
|
59
61
|
end
|
60
62
|
|
61
63
|
|
@@ -81,31 +83,31 @@ Pod::HooksManager.register('cocoapods-cafswitcher', :pre_install) do |installer_
|
|
81
83
|
# end
|
82
84
|
|
83
85
|
# 二进制切换
|
84
|
-
|
86
|
+
currentSourceList.each do |sourceName|
|
85
87
|
cleanENV(sourceName)
|
86
|
-
setEnv(sourceName,
|
88
|
+
setEnv(sourceName, '_SOURCE')
|
87
89
|
# ENV["#{sourceName}_SOURCE"] = '1'
|
88
90
|
end
|
89
91
|
|
90
|
-
|
92
|
+
currentArchiveList.each do |archiveName|
|
91
93
|
cleanENV(archiveName)
|
92
|
-
setEnv(archiveName,
|
94
|
+
setEnv(archiveName, '_ARCHIVE')
|
93
95
|
# ENV["#{archiveName}_ARCHIVE"] = '1'
|
94
96
|
end
|
95
97
|
|
96
|
-
|
98
|
+
currentFrameworkList.each do |frameworkName|
|
97
99
|
cleanENV(frameworkName)
|
98
|
-
setEnv(frameworkName,
|
100
|
+
setEnv(frameworkName, '_FRAMEWORK')
|
99
101
|
# ENV["#{frameworkName}_FRAMEWORK"] = '1'
|
100
102
|
end
|
101
103
|
|
102
|
-
sourceList =
|
103
|
-
archiveList =
|
104
|
-
frameworkList =
|
104
|
+
sourceList = []
|
105
|
+
archiveList = []
|
106
|
+
frameworkList = []
|
105
107
|
# debugPackageList = Array.new
|
106
108
|
# releasePackageList = Array.new
|
107
109
|
|
108
|
-
|
110
|
+
allNames.each do |name|
|
109
111
|
envName = name.gsub(/[\/]/, '_')
|
110
112
|
# if ENV["#{name}_DEBUG"] == '1'
|
111
113
|
# debugPackageList << name
|
@@ -138,7 +140,7 @@ Pod::HooksManager.register('cocoapods-cafswitcher', :pre_install) do |installer_
|
|
138
140
|
|
139
141
|
# caf_hash = Hash["sourceList" => sourceList, "archiveList" => archiveList, "frameworkList" => frameworkList,
|
140
142
|
# "debugPackageList" => debugPackageList, "releasePackageList" => releasePackageList]
|
141
|
-
caf_hash = Hash[
|
143
|
+
caf_hash = Hash['sourceList' => sourceList, 'archiveList' => archiveList, 'frameworkList' => frameworkList]
|
142
144
|
|
143
145
|
|
144
146
|
config = Pod::Config.instance
|
@@ -146,70 +148,81 @@ Pod::HooksManager.register('cocoapods-cafswitcher', :pre_install) do |installer_
|
|
146
148
|
require_relative('cafswitcher_config')
|
147
149
|
|
148
150
|
configPath = config.cafConfigPath
|
149
|
-
FileUtils.mkdir_p(configPath)
|
151
|
+
FileUtils.mkdir_p(configPath) unless configPath.exist?
|
150
152
|
configFile = config.cafConfigFile
|
151
|
-
cafConfig = Hash
|
153
|
+
cafConfig = Hash['sourceList' => [], 'archiveList' => [], 'frameworkList' => []]
|
152
154
|
if configFile.exist?
|
153
155
|
cafConfig = YAML.load(File.open(configFile))
|
156
|
+
cafConfig ||= Hash['sourceList' => [], 'archiveList' => [], 'frameworkList' => []]
|
154
157
|
else
|
155
158
|
FileUtils.touch configFile
|
156
|
-
# cafConfig = Hash["sourceList" => [], "archiveList" => [], "frameworkList" => [],
|
157
|
-
# "debugPackageList" => [], "releasePackageList" => []]
|
158
|
-
cafConfig = Hash["sourceList" => [], "archiveList" => [], "frameworkList" => []]
|
159
159
|
end
|
160
160
|
# 比较不同
|
161
|
-
changedSubPods =
|
161
|
+
changedSubPods = []
|
162
162
|
cafConfig.each do |key, value|
|
163
163
|
# if key == "debugPackageList"
|
164
164
|
# changedSubPods |= (value | debugPackageList) - (value & debugPackageList)
|
165
165
|
# elsif key == "releasePackageList"
|
166
166
|
# changedSubPods |= (value | releasePackageList) - (value & releasePackageList)
|
167
|
-
if key ==
|
167
|
+
if key == 'sourceList'
|
168
168
|
changedSubPods |= (value | sourceList) - (value & sourceList)
|
169
|
-
elsif key ==
|
169
|
+
elsif key == 'archiveList'
|
170
170
|
changedSubPods |= (value | archiveList) - (value & archiveList)
|
171
|
-
elsif key ==
|
171
|
+
elsif key == 'frameworkList'
|
172
172
|
changedSubPods |= (value | frameworkList) - (value & frameworkList)
|
173
173
|
end
|
174
174
|
end
|
175
|
-
|
175
|
+
|
176
|
+
Pod::UI.puts "\nchanged sub Pod is:\n " + changedSubPods.to_s unless changedSubPods.empty?
|
176
177
|
# changedPod 里是根据subspec来存的,需要进行合并,找到pod库而不是含有subspec的库
|
177
|
-
changedPods =
|
178
|
+
changedPods = []
|
178
179
|
changedSubPods.each do |subPod|
|
179
|
-
podName = subPod.split(
|
180
|
+
podName = subPod.split('/')[0]
|
180
181
|
changedPods << podName
|
181
182
|
end
|
182
183
|
# changedPods = changedPods | needUpdatePodList
|
183
184
|
changedPods.uniq!
|
185
|
+
Pod::Podfile.changedPods.concat changedPods if changedPods
|
186
|
+
Pod::Podfile.changedSubPods.concat changedSubPods if changedSubPods
|
187
|
+
Pod::UI.puts "\nchanged Pod is:\n " + changedPods.to_s unless changedPods.empty?
|
184
188
|
|
185
|
-
Pod::
|
186
|
-
|
189
|
+
@cache = Pod::Downloader::Cache.new(Pod::Config.instance.cache_root + 'Pods')
|
187
190
|
# 根据不同删除cache
|
188
191
|
podRoot = config.project_pods_root
|
189
192
|
changedSubPods.each do |changedSubPod|
|
190
|
-
changedPod = changedSubPod.split(
|
193
|
+
changedPod = changedSubPod.split('/')[0]
|
191
194
|
if needUpdatePodList.delete(changedSubPod)
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
195
|
+
cache_descriptors = @cache.cache_descriptors_per_pod[changedPod]
|
196
|
+
if cache_descriptors
|
197
|
+
cache_descriptors.each do |desc|
|
198
|
+
next unless desc[:release] == false
|
199
|
+
Pod::UI.message("Removing spec #{desc[:spec_file]} (v#{desc[:version]})") do
|
200
|
+
FileUtils.rm desc[:spec_file]
|
201
|
+
end
|
202
|
+
Pod::UI.message("Removing cache #{desc[:slug]}") do
|
203
|
+
FileUtils.rm_rf(desc[:slug])
|
204
|
+
end
|
205
|
+
end
|
206
|
+
end
|
196
207
|
end
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
208
|
+
next unless changedSubPod =~ /^(?i)LJ/ || changedSubPod =~ /^(?i)Lianjia/
|
209
|
+
# 清除目录 pods 文件夹下的缓存
|
210
|
+
changedPodPath = podRoot + changedPod
|
211
|
+
if changedPodPath.exist?
|
212
|
+
Pod::UI.message "Removing Folder #{changedPodPath}"
|
213
|
+
FileUtils.rm_r(changedPodPath)
|
201
214
|
end
|
202
215
|
end
|
203
216
|
|
204
217
|
# 把新的配置写入file
|
205
|
-
File.open(configFile,
|
218
|
+
File.open(configFile, 'wb') {|f| YAML.dump(caf_hash, f) } unless changedSubPods.empty?
|
206
219
|
end
|
207
220
|
|
208
221
|
|
209
222
|
def setEnv(name, suffix)
|
210
223
|
envName = name.gsub(/[\/]/, '_')
|
211
224
|
ENV["#{envName}#{suffix}"] = '1'
|
212
|
-
podName = name.split(
|
225
|
+
podName = name.split('/')[0]
|
213
226
|
ENV["#{podName}#{suffix}"] = '1'
|
214
227
|
end
|
215
228
|
|
@@ -228,4 +241,7 @@ end
|
|
228
241
|
# ENV.delete("#{name}_DEBUG")
|
229
242
|
# ENV.delete("#{name}_RELEASE")
|
230
243
|
# ENV.delete('IS_DEBUG')
|
231
|
-
# end
|
244
|
+
# end
|
245
|
+
#
|
246
|
+
|
247
|
+
Pod
|
@@ -1,7 +1,9 @@
|
|
1
|
+
require 'cocoapods/installer'
|
2
|
+
require 'cocoapods/resolver'
|
3
|
+
require 'cocoapods-cafswitcher/Main'
|
1
4
|
module Pod
|
2
5
|
|
3
6
|
class Podfile
|
4
|
-
|
5
7
|
# add flag
|
6
8
|
# :isSource => true
|
7
9
|
def self.isSource
|
@@ -31,21 +33,21 @@ module Pod
|
|
31
33
|
# :isReleasePackage
|
32
34
|
# end
|
33
35
|
|
34
|
-
@@sourceList =
|
36
|
+
@@sourceList = []
|
35
37
|
|
36
|
-
def
|
38
|
+
def self.sourceList
|
37
39
|
@@sourceList
|
38
40
|
end
|
39
41
|
|
40
|
-
@@archiveList =
|
42
|
+
@@archiveList = []
|
41
43
|
|
42
|
-
def
|
44
|
+
def self.archiveList
|
43
45
|
@@archiveList
|
44
46
|
end
|
45
47
|
|
46
|
-
@@frameworkList =
|
48
|
+
@@frameworkList = []
|
47
49
|
|
48
|
-
def
|
50
|
+
def self.frameworkList
|
49
51
|
@@frameworkList
|
50
52
|
end
|
51
53
|
|
@@ -62,18 +64,36 @@ module Pod
|
|
62
64
|
# end
|
63
65
|
|
64
66
|
# all the name of Pod
|
65
|
-
@@allPodName =
|
67
|
+
@@allPodName = []
|
66
68
|
|
67
|
-
def
|
69
|
+
def self.allPodName
|
68
70
|
@@allPodName
|
69
71
|
end
|
70
72
|
|
71
|
-
@@needUpdatePodList =
|
73
|
+
@@needUpdatePodList = []
|
72
74
|
|
73
|
-
def
|
75
|
+
def self.needUpdatePodList
|
74
76
|
@@needUpdatePodList
|
75
77
|
end
|
76
78
|
|
79
|
+
@@changedSubPods = []
|
80
|
+
|
81
|
+
def self.changedSubPods
|
82
|
+
@@changedSubPods
|
83
|
+
end
|
84
|
+
|
85
|
+
@@changedPods= []
|
86
|
+
|
87
|
+
def self.changedPods
|
88
|
+
@@changedPods
|
89
|
+
end
|
90
|
+
|
91
|
+
@@tmpSourceList= []
|
92
|
+
|
93
|
+
def self.tmpSourceList
|
94
|
+
@@tmpSourceList
|
95
|
+
end
|
96
|
+
|
77
97
|
|
78
98
|
module DSL
|
79
99
|
# Enable code for all pods
|
@@ -102,11 +122,9 @@ module Pod
|
|
102
122
|
def parse_isFramework(name, requirements)
|
103
123
|
options = requirements.last
|
104
124
|
return requirements unless options.is_a?(Hash)
|
105
|
-
isFramework = options.
|
125
|
+
isFramework = options.key?(Pod::Podfile.isFramework)
|
106
126
|
# pod_name = Specification.root_name(name)
|
107
|
-
if isFramework
|
108
|
-
Pod::Podfile.frameworkList << name
|
109
|
-
end
|
127
|
+
Pod::Podfile.frameworkList << name if isFramework
|
110
128
|
requirements.pop if options.empty?
|
111
129
|
end
|
112
130
|
|
@@ -114,11 +132,9 @@ module Pod
|
|
114
132
|
options = requirements.last
|
115
133
|
return requirements unless options.is_a?(Hash)
|
116
134
|
|
117
|
-
isSource = options.
|
135
|
+
isSource = options.key?(Pod::Podfile.isSource)
|
118
136
|
# pod_name = Specification.root_name(name)
|
119
|
-
if isSource
|
120
|
-
Pod::Podfile.sourceList << name
|
121
|
-
end
|
137
|
+
Pod::Podfile.sourceList << name if isSource
|
122
138
|
requirements.pop if options.empty?
|
123
139
|
end
|
124
140
|
|
@@ -126,11 +142,9 @@ module Pod
|
|
126
142
|
options = requirements.last
|
127
143
|
return requirements unless options.is_a?(Hash)
|
128
144
|
|
129
|
-
isArchive = options.
|
145
|
+
isArchive = options.key?(Pod::Podfile.isArchive)
|
130
146
|
# pod_name = Specification.root_name(name)
|
131
|
-
if isArchive
|
132
|
-
Pod::Podfile.archiveList << name
|
133
|
-
end
|
147
|
+
Pod::Podfile.archiveList << name if isArchive
|
134
148
|
|
135
149
|
requirements.pop if options.empty?
|
136
150
|
end
|
@@ -163,11 +177,9 @@ module Pod
|
|
163
177
|
options = requirements.last
|
164
178
|
return requirements unless options.is_a?(Hash)
|
165
179
|
|
166
|
-
isGitPath = options.
|
180
|
+
isGitPath = options.key?(:git)
|
167
181
|
# pod_name = Specification.root_name(name)
|
168
|
-
if isGitPath
|
169
|
-
Pod::Podfile.needUpdatePodList << name
|
170
|
-
end
|
182
|
+
Pod::Podfile.needUpdatePodList << name if isGitPath
|
171
183
|
requirements.pop if options.empty?
|
172
184
|
end
|
173
185
|
|
@@ -175,11 +187,9 @@ module Pod
|
|
175
187
|
options = requirements.last
|
176
188
|
return requirements unless options.is_a?(Hash)
|
177
189
|
|
178
|
-
isPath = options.
|
190
|
+
isPath = options.key?(:path)
|
179
191
|
# pod_name = Specification.root_name(name)
|
180
|
-
if isPath
|
181
|
-
Pod::Podfile.needUpdatePodList << name
|
182
|
-
end
|
192
|
+
Pod::Podfile.needUpdatePodList << name if isPath
|
183
193
|
requirements.pop if options.empty?
|
184
194
|
end
|
185
195
|
|
@@ -198,7 +208,7 @@ module Pod
|
|
198
208
|
parse_needUpdatePod_path(name, requirements)
|
199
209
|
# pod_name = Specification.root_name(name)
|
200
210
|
Pod::Podfile.allPodName << name
|
201
|
-
old_method.bind(self).(name, requirements)
|
211
|
+
old_method.bind(self).call(name, requirements)
|
202
212
|
end
|
203
213
|
|
204
214
|
def deep_copy(o)
|
@@ -227,18 +237,84 @@ module Pod
|
|
227
237
|
|
228
238
|
# 去掉添加的字段
|
229
239
|
tmp_hash = clean(name, requirements)
|
230
|
-
if tmp_hash && !tmp_hash.empty?
|
231
|
-
|
240
|
+
pod = if tmp_hash && !tmp_hash.empty?
|
241
|
+
{ name => tmp_hash }
|
232
242
|
else
|
233
|
-
|
234
|
-
|
243
|
+
name
|
244
|
+
end
|
235
245
|
|
236
246
|
get_hash_value('dependencies', []) << pod
|
237
247
|
nil
|
238
248
|
end
|
239
249
|
|
240
|
-
|
241
250
|
end
|
251
|
+
end
|
252
|
+
|
242
253
|
|
254
|
+
class Specification
|
255
|
+
class Set
|
256
|
+
|
257
|
+
old_specification_name = instance_method(:specification_name)
|
258
|
+
# 对于内部依赖,如果父依赖是源码,则子依赖也是源码,父依赖决定
|
259
|
+
define_method(:specification_name) do ||
|
260
|
+
if Pod::Podfile.changedSubPods
|
261
|
+
spec = Specification.from_file(specification_paths_for_version(any_version).first)
|
262
|
+
if (spec.name =~ /^(?i)LJ/ || spec.name =~ /^(?i)Lianjia/) && spec.subspecs
|
263
|
+
dependence_note =[]
|
264
|
+
spec.subspecs.each do |subspec|
|
265
|
+
next if Pod::Podfile.archiveList.include?(subspec.name)
|
266
|
+
next if Pod::Podfile.frameworkList.include?(subspec.name)
|
267
|
+
if Pod::Podfile.sourceList.include?(spec.name) || Pod::Podfile.tmpSourceList.include?(spec.name)
|
268
|
+
dependence_note << subspec.name
|
269
|
+
next
|
270
|
+
end
|
271
|
+
envName = subspec.name.gsub(/[\/]/, '_')
|
272
|
+
next unless Pod::Podfile.sourceList.include?(subspec.name) || Pod::Podfile.tmpSourceList.include?(subspec.name)
|
273
|
+
next unless subspec.dependencies
|
274
|
+
subspec.dependencies.each do |dependency|
|
275
|
+
next unless dependency.name =~ /^(?i)#{spec.name}/
|
276
|
+
next if Pod::Podfile.archiveList.include?(dependency.name)
|
277
|
+
next if Pod::Podfile.frameworkList.include?(dependency.name)
|
278
|
+
dependence_note << dependency.name
|
279
|
+
# Pod::Podfile.sourceList << dependency.name unless Pod::Podfile.sourceList.include?(dependency.name)
|
280
|
+
end
|
281
|
+
end
|
282
|
+
|
283
|
+
dependence_note.each do |note|
|
284
|
+
cleanENV note
|
285
|
+
setEnv note, '_SOURCE'
|
286
|
+
end
|
287
|
+
end
|
288
|
+
end
|
289
|
+
name = old_specification_name.bind(self).call
|
290
|
+
name
|
291
|
+
end
|
292
|
+
|
293
|
+
end
|
243
294
|
end
|
295
|
+
|
296
|
+
|
297
|
+
|
298
|
+
# class Lockfile
|
299
|
+
#
|
300
|
+
# old_detect_changes_with_podfile = instance_method(:detect_changes_with_podfile)
|
301
|
+
#
|
302
|
+
# define_method(:detect_changes_with_podfile) do |podfile|
|
303
|
+
# pods_by_state = old_detect_changes_with_podfile.bind(self).(podfile)
|
304
|
+
# Pod::UI.puts Pod::Podfile.changedSubPods
|
305
|
+
# Pod::Podfile.changedSubPods.each do |changedSubPod|
|
306
|
+
# changedPod = changedSubPod.split("/")[0]
|
307
|
+
# if changedSubPod =~ /^(?i)LJ/ or changedSubPod =~ /^(?i)Lianjia/
|
308
|
+
# if pods_by_state.has_key?(:changed) and !pods_by_state[:changed].include? changedPod
|
309
|
+
# pods_by_state[:changed] << changedPod
|
310
|
+
# if pods_by_state.has_key?(:unchanged) and pods_by_state[:unchanged].include? changedPod
|
311
|
+
# pods_by_state[:unchanged].delete changedPod
|
312
|
+
# end
|
313
|
+
# end
|
314
|
+
# end
|
315
|
+
# end
|
316
|
+
# pods_by_state
|
317
|
+
# end
|
318
|
+
#
|
319
|
+
# end
|
244
320
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-cafswitcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- handa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-11-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|