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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0b7c82ff0bdb57b01a57970524a9811430ebf59c3ae17d0ed77a1ff7c215dead
4
- data.tar.gz: c6430a5d542b76bdbb7a9558e5f56016284f63b34595ed393e6c16ffbf4eaee2
3
+ metadata.gz: f4cb2218088b7d582c2096ff569b5b76fa713a778e11753091070153738fc35d
4
+ data.tar.gz: de86507394b201e011239d135392e6924c6c5800df6175633ec82fc90e907822
5
5
  SHA512:
6
- metadata.gz: 266791826feee895c04cee0faffcb67a6b9e620eae2258a33d475c675c5ef76c80c32d6a77834057566064447a592f57a9c55c1984b3db2ea71477bddb7ab2f4
7
- data.tar.gz: 11b9ad02463d0be2fabeae5be0fd71c7af11575e9a9aa42eafe6d86bcb3fc35e8919a0aa0c7db353288c3c7eaaf5b888540120054c5aac31c0789d93c7c2e1a4
6
+ metadata.gz: 607aa67ef50f0065f9979fd57bb531d640560bb53448a0233c02ca1ad8dce4ff228e01eee30fd80537b1765a5c45945bf55437b5ad739f671bc560bd62a0bf08
7
+ data.tar.gz: 4475e8ae542181376dc1818a61ad6cfda5a517d31af8d6a4071d04930e8ebe290ba432a295e2fd709ad0aae4a4ec8a8a5060f79ed578557cb73963cc3e5b44ae
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cocoapods-cafswitcher (0.0.10)
4
+ cocoapods-cafswitcher (0.0.12)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -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
- for name in allNames
45
- setEnv(name, "_ARCHIVE")
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
- for name in allNames
51
- setEnv(name, "_SOURCE")
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
- for name in needUpdatePodList
58
- currentSourceList = currentSourceList << name if !currentSourceList.include?(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
- for sourceName in currentSourceList
86
+ currentSourceList.each do |sourceName|
85
87
  cleanENV(sourceName)
86
- setEnv(sourceName, "_SOURCE")
88
+ setEnv(sourceName, '_SOURCE')
87
89
  # ENV["#{sourceName}_SOURCE"] = '1'
88
90
  end
89
91
 
90
- for archiveName in currentArchiveList
92
+ currentArchiveList.each do |archiveName|
91
93
  cleanENV(archiveName)
92
- setEnv(archiveName, "_ARCHIVE")
94
+ setEnv(archiveName, '_ARCHIVE')
93
95
  # ENV["#{archiveName}_ARCHIVE"] = '1'
94
96
  end
95
97
 
96
- for frameworkName in currentFrameworkList
98
+ currentFrameworkList.each do |frameworkName|
97
99
  cleanENV(frameworkName)
98
- setEnv(frameworkName, "_FRAMEWORK")
100
+ setEnv(frameworkName, '_FRAMEWORK')
99
101
  # ENV["#{frameworkName}_FRAMEWORK"] = '1'
100
102
  end
101
103
 
102
- sourceList = Array.new
103
- archiveList = Array.new
104
- frameworkList = Array.new
104
+ sourceList = []
105
+ archiveList = []
106
+ frameworkList = []
105
107
  # debugPackageList = Array.new
106
108
  # releasePackageList = Array.new
107
109
 
108
- for name in allNames
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["sourceList" => sourceList, "archiveList" => archiveList, "frameworkList" => frameworkList]
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) if !configPath.exist?
151
+ FileUtils.mkdir_p(configPath) unless configPath.exist?
150
152
  configFile = config.cafConfigFile
151
- cafConfig = Hash.new
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 = Array.new
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 == "sourceList"
167
+ if key == 'sourceList'
168
168
  changedSubPods |= (value | sourceList) - (value & sourceList)
169
- elsif key == "archiveList"
169
+ elsif key == 'archiveList'
170
170
  changedSubPods |= (value | archiveList) - (value & archiveList)
171
- elsif key == "frameworkList"
171
+ elsif key == 'frameworkList'
172
172
  changedSubPods |= (value | frameworkList) - (value & frameworkList)
173
173
  end
174
174
  end
175
- Pod::UI.puts "\nchanged sub Pod is:\n " + changedSubPods.to_s if changedSubPods.length > 0
175
+
176
+ Pod::UI.puts "\nchanged sub Pod is:\n " + changedSubPods.to_s unless changedSubPods.empty?
176
177
  # changedPod 里是根据subspec来存的,需要进行合并,找到pod库而不是含有subspec的库
177
- changedPods = Array.new
178
+ changedPods = []
178
179
  changedSubPods.each do |subPod|
179
- podName = subPod.split("/")[0]
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::UI.puts "\nchanged Pod is:\n " + changedPods.to_s if changedPods.length > 0
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("/")[0]
193
+ changedPod = changedSubPod.split('/')[0]
191
194
  if needUpdatePodList.delete(changedSubPod)
192
- Pod::UI.puts "正在清理#{changedPod}的缓存"
193
- cacheCleanCMD = "pod cache clean #{changedPod} --all"
194
- out = `#{cacheCleanCMD}`.lines.to_a
195
- Pod::UI.puts out
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
- if changedSubPod =~ /^(?i)LJ/ or changedSubPod =~ /^(?i)Lianjia/
198
- # 清除目录 pods 文件夹下的缓存
199
- changedPodPath = podRoot + changedPod
200
- FileUtils.rm_r(changedPodPath) if changedPodPath.exist?
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, "wb") {|f| YAML.dump(caf_hash, f) } if changedSubPods.length > 0
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("/")[0]
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,3 +1,3 @@
1
1
  module CocoapodsCafswitcher
2
- VERSION = "0.0.11"
2
+ VERSION = "0.0.12"
3
3
  end
@@ -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 = Array.new
36
+ @@sourceList = []
35
37
 
36
- def Podfile.sourceList
38
+ def self.sourceList
37
39
  @@sourceList
38
40
  end
39
41
 
40
- @@archiveList = Array.new
42
+ @@archiveList = []
41
43
 
42
- def Podfile.archiveList
44
+ def self.archiveList
43
45
  @@archiveList
44
46
  end
45
47
 
46
- @@frameworkList = Array.new
48
+ @@frameworkList = []
47
49
 
48
- def Podfile.frameworkList
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 = Array.new
67
+ @@allPodName = []
66
68
 
67
- def Podfile.allPodName
69
+ def self.allPodName
68
70
  @@allPodName
69
71
  end
70
72
 
71
- @@needUpdatePodList = Array.new
73
+ @@needUpdatePodList = []
72
74
 
73
- def Podfile.needUpdatePodList
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.has_key?(Pod::Podfile.isFramework)
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.has_key?(Pod::Podfile.isSource)
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.has_key?(Pod::Podfile.isArchive)
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.has_key?(:git)
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.has_key?(:path)
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
- pod = { name => tmp_hash }
240
+ pod = if tmp_hash && !tmp_hash.empty?
241
+ { name => tmp_hash }
232
242
  else
233
- pod = name
234
- end
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.11
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-10-26 00:00:00.000000000 Z
11
+ date: 2018-11-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler