cocoapods-cafswitcher 0.0.11 → 0.0.12

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 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