cocoapods-privacy 0.1.1 → 0.1.3
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3a01926feebe0e4abec4ba740c40045150fa16eadbde2286bbe9bfeedaa6594d
|
4
|
+
data.tar.gz: 43e885178765e82aef94d3b2e0a115fc807c410b389b6c6752ac673dd45de73f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 625ebb584fe2db868894a19e7fe8bff1cbf817d3b1026418afaf48588d3ee5ae2bd81bb1c4d265bf03e8a28ffd61b73fceda1457c2c120315b2cb70be0c072d0
|
7
|
+
data.tar.gz: e9fc5727cafed29d6afbbd6a9c0f9dd964e1871125215e191103ad7e80342c0ddd2ca0068c213be272c70bedf7e99bf58442545c0b739263f4814607051a22e6
|
@@ -8,6 +8,7 @@ require 'cocoapods-privacy/command'
|
|
8
8
|
# 3、检索到的内容转换成隐私协议格式写入 隐私清单文件 PrivacyInfo.xcprivacy
|
9
9
|
##
|
10
10
|
module PrivacyHunter
|
11
|
+
|
11
12
|
KTypes = "NSPrivacyAccessedAPITypes"
|
12
13
|
KType = "NSPrivacyAccessedAPIType"
|
13
14
|
KReasons = "NSPrivacyAccessedAPITypeReasons"
|
@@ -103,12 +104,12 @@ module PrivacyHunter
|
|
103
104
|
def self.fetch_template_plist_file
|
104
105
|
|
105
106
|
unless File.exist?(PrivacyUtils.cache_config_file)
|
106
|
-
raise Informative, "无配置文件,run `pod privacy config config_file' 进行配置"
|
107
|
+
raise Pod::Informative, "无配置文件,run `pod privacy config config_file' 进行配置"
|
107
108
|
end
|
108
109
|
|
109
110
|
template_url = Privacy::Config.instance.api_template_url
|
110
111
|
unless template_url && !template_url.empty?
|
111
|
-
raise Informative, "配置文件中无 `api.template.url` 配置,请补全后再更新配置 `pod privacy config config_file` "
|
112
|
+
raise Pod::Informative, "配置文件中无 `api.template.url` 配置,请补全后再更新配置 `pod privacy config config_file` "
|
112
113
|
end
|
113
114
|
|
114
115
|
# 目标文件路径
|
@@ -29,7 +29,7 @@ class BBRow
|
|
29
29
|
end
|
30
30
|
|
31
31
|
class BBSpec
|
32
|
-
attr_accessor :name, :alias_name, :full_name, :rows, :privacy_sources, :privacy_file
|
32
|
+
attr_accessor :name, :alias_name, :full_name, :parent, :rows, :privacy_sources, :privacy_file
|
33
33
|
|
34
34
|
def initialize(name,alias_name,full_name)
|
35
35
|
@rows = []
|
@@ -40,6 +40,23 @@ class BBSpec
|
|
40
40
|
@privacy_file = "Pod/Privacy/#{full_name}/PrivacyInfo.xcprivacy"
|
41
41
|
end
|
42
42
|
|
43
|
+
|
44
|
+
def uniq_full_name_in_parent(name)
|
45
|
+
names = []
|
46
|
+
@rows.each_with_index do |line, index|
|
47
|
+
if line && line.is_a?(BBSpec)
|
48
|
+
names << line.name
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
#判断names 中是否包含 name,如果包含,那么给name 添加一个 “.diff” 后缀,一直到names 中没有包含name为止
|
53
|
+
while names.include?(name)
|
54
|
+
name = "#{name}.diff"
|
55
|
+
end
|
56
|
+
|
57
|
+
"#{@full_name}.#{name}"
|
58
|
+
end
|
59
|
+
|
43
60
|
def privacy_handle(podspec_file_path)
|
44
61
|
source_files_index = 1
|
45
62
|
@rows.each_with_index do |line, index|
|
@@ -196,17 +213,23 @@ module PrivacyModule
|
|
196
213
|
|
197
214
|
def self.parse_row(lines)
|
198
215
|
rows = []
|
199
|
-
|
216
|
+
code_stack = [] #栈,用来排除if end 等对spec 的干扰
|
217
|
+
|
200
218
|
lines.each do |line|
|
201
219
|
content = line.strip
|
202
220
|
is_comment = content.start_with?('#')
|
203
221
|
is_spec_start = !is_comment && (content.include?('Pod::Spec.new') || content.include?('.subspec'))
|
204
222
|
is_if = !is_comment && content.start_with?('if')
|
205
223
|
is_end = !is_comment && content.start_with?('end')
|
224
|
+
|
206
225
|
# 排除if end 对spec_end 的干扰
|
207
|
-
|
208
|
-
|
209
|
-
|
226
|
+
code_stack.push('spec') if is_spec_start
|
227
|
+
code_stack.push('if') if is_if
|
228
|
+
stack_last = code_stack.last
|
229
|
+
is_spec_end = is_end && stack_last && stack_last == 'spec'
|
230
|
+
is_if_end = is_end && stack_last && stack_last == 'if'
|
231
|
+
code_stack.pop if is_spec_end || is_if_end
|
232
|
+
|
210
233
|
row = BBRow.new(line, is_comment, is_spec_start, is_spec_end)
|
211
234
|
rows << row
|
212
235
|
end
|
@@ -236,15 +259,20 @@ module PrivacyModule
|
|
236
259
|
|
237
260
|
rows.each do |row|
|
238
261
|
if row.is_spec_start
|
262
|
+
# 获取父spec
|
263
|
+
parent_spec = spec_stack.last
|
264
|
+
|
239
265
|
# 创建 spec
|
240
266
|
name = row.content.split("'")[1]&.strip || default_name
|
241
267
|
alias_name = row.content.split("|")[1]&.strip
|
242
|
-
full_name =
|
268
|
+
full_name = parent_spec ? parent_spec.uniq_full_name_in_parent(name) : name
|
269
|
+
|
243
270
|
spec = BBSpec.new(name,alias_name,full_name)
|
244
271
|
spec.rows << row
|
272
|
+
spec.parent = parent_spec
|
245
273
|
|
246
274
|
# 当存在 spec 时,存储在 spec.rows 中;不存在时,直接存储在外层
|
247
|
-
(
|
275
|
+
(parent_spec ? parent_spec.rows : result_rows ) << spec
|
248
276
|
|
249
277
|
# spec 入栈
|
250
278
|
spec_stack.push(spec)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-privacy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- youhui
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-01
|
11
|
+
date: 2024-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|