cocoapods-entitlements-statistics 0.0.1 → 0.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b18c67b431404139e32390800cee36de2c9443a053716f29832d32d22424954a
4
- data.tar.gz: be771fb8171db38589b66f32155b946958d5d34b79b4ace92f8e8e6ea146bbd5
3
+ metadata.gz: 78d44f3a0db351e7ad3cb4bbb426580cffcf959a9cf4621d989458a1e2cc657f
4
+ data.tar.gz: 4245ab156cf2c05355ce391493dbd5fd58266dd038e3d9e75ecead3c6c74ead0
5
5
  SHA512:
6
- metadata.gz: e3596496a3b67f9ae0cb268fe08118f415ca5e9073cea82017bb8176cef932158b44768cfbcebb9b7185b74ff293420895f2221c8aa02d069ebae6dc04305c70
7
- data.tar.gz: 9c740e1c280ab955be62a9f51a7678bc07a50c5a28d16049cedf1964283f17ec0c12d87a6cab6710c0540821f6da7a888130264b3e7ca0d72b63a2288951f1a1
6
+ metadata.gz: e07b6ba5362321dfcb4edffa1431ef56bf95d4ee3bf40a287e45e1853ce6d8a88675c024bd2a802d7c7bae09f29f83d63915c182b03d21a12de1674d21979997
7
+ data.tar.gz: '0956de16c391e87cfd659e3310d24904f5c234a171580a40f4f9c335a343d87ba26df231ad0edd703230e334a3d1898761e572f47aa9a455c18e3fdd6d30fb3f'
data/Gemfile CHANGED
@@ -2,8 +2,7 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in cocoapods-entitlements-statistics.gemspec
4
4
  gemspec
5
- gem 'crimp'
6
- gem 'zip'
5
+
7
6
 
8
7
  group :development do
9
8
  gem 'cocoapods'
@@ -14,5 +13,6 @@ group :development do
14
13
  gem 'prettybacon'
15
14
  gem 'crimp'
16
15
  gem 'zip'
16
+ gem 'terminal-table'
17
17
 
18
18
  end
data/README.md CHANGED
@@ -6,16 +6,25 @@ iOS app 权限统计, 使用cocoapods plugin 触发
6
6
  ## 安装
7
7
 
8
8
  ```shell
9
- # 下载Releases v0.0.1 gem文件,然后进入下载目录执行下面命令
10
- sudo gem install cocoapods-entitlements-statistics-0.0.1.gem
9
+ sudo gem install cocoapods-entitlements-statistics
11
10
  ```
12
11
 
13
12
  ## 使用
14
13
 
14
+ 在Gemfile中声明插件
15
+
16
+ ```ruby
17
+ source "https://rubygems.org"
18
+ #声明
19
+ gem 'cocoapods-entitlements-statistics'
20
+ ...
21
+ ```
22
+
23
+
15
24
  在 Podfile 文件添加插件引用
16
25
 
17
26
  ```ruby
18
- #引入插件, 可以自定义 report_path, 默认在(iOS)项目根目录
27
+ #引入, 可以自定义 report_path, 默认在(iOS)项目根目录
19
28
  plugin 'cocoapods-entitlements-statistics', :report_path => '/Users/rd01/Desktop'
20
29
  #plugin 'cocoapods-entitlements-statistics'
21
30
 
@@ -34,6 +43,10 @@ Pod installation complete! There are 75 dependencies from the Podfile and 116 to
34
43
 
35
44
  ```
36
45
 
46
+ > 也可以手动执行cli 命令
47
+ >
48
+ > 仓库地址: https://github.com/olaola-chat/cli-app_permission_statistics
49
+
37
50
  ## 说明
38
51
 
39
52
  ##### 版本权限统计
@@ -102,11 +115,19 @@ remove capabilitys :
102
115
  #### 涉及的文件
103
116
 
104
117
  * info.plist
105
- * Runner.entitlements Capabilitys被添加后的,Xcode自动创建plist格式文件,里面包含相关Capability的声明、设置
118
+ * Runner.entitlements
119
+
120
+ Capabilitys被添加后的,Xcode自动创建plist格式文件,里面包含相关Capability的声明、设置
121
+
106
122
  * {embedded/xxx-xx-xx}.mobileprovision
107
- 包括里面的Entitlements字段, 保存一些 Capabilitys被添加后的 声明、设置
123
+
124
+ embedded.mobileprovision 存在于IPA包中,被发送到Appstore,真正安装的app 却没有这个文件
125
+
126
+ xxx-xx-xx.mobileprovision 在打包成IPA前用于工程签名的描述文件
127
+ 两者基本一致,包括里面的Entitlements字段, 保存一些 Capabilitys被添加后的 声明、设置
108
128
  * Runner.xcodeproj
109
- 工程文件SystemCapabilities字段包含了一些Capabilitys声明
129
+
130
+ 工程文件SystemCapabilities字段包含了一些Capabilitys 的开关字段
110
131
 
111
132
  相关文档:
112
133
 
@@ -3,6 +3,7 @@
3
3
  require_relative "helper"
4
4
  require 'fileutils'
5
5
  require 'yaml'
6
+ require 'terminal-table'
6
7
 
7
8
  module AppEntitlementsStatistics
8
9
 
@@ -13,25 +14,27 @@ module AppEntitlementsStatistics
13
14
  attr_reader :report_path
14
15
  attr_reader :identifier
15
16
 
16
- def initialize(identifier,report_path: nil, store_path: nil)
17
+ def initialize(identifier,report_path = nil,store_path = nil)
17
18
  @identifier = identifier
18
19
  @report_path = report_path
19
20
  @store_path = store_path
20
21
  end
21
22
 
22
- def analyze
23
- load_version
24
- return singleGenerate unless @versions.length > 1
25
- pre_version = @versions[1]
26
- cur_version = @versions[0]
27
- pre_entitlements = load_entitlements_yaml(pre_version)
28
- cur_entitlements = load_entitlements_yaml(cur_version)
23
+ def analyze(versions=[])
24
+ versions.sort{|x,y| y<=>x } unless versions.size < 2
25
+ if versions.length < 2
26
+ load_version
27
+ return singleGenerate unless @versions.length > 1
28
+ else
29
+ @versions = versions
30
+ end
31
+ pre_entitlements = load_entitlements_yaml(@versions[1])
32
+ cur_entitlements = load_entitlements_yaml(@versions[0])
29
33
  return "" unless pre_entitlements.any?
30
34
  return "" unless cur_entitlements.any?
31
35
 
32
- capabilities_diff = analyze_capabilities_diff(pre_entitlements,cur_entitlements)
33
- usage_descs_diff = analyze_usage_descs_diff(pre_entitlements,cur_entitlements);
34
- report_path = generate(capabilities_diff,usage_descs_diff)
36
+ capabilities_diff = analyze_diff(pre_entitlements,cur_entitlements)
37
+ report_path = generate(capabilities_diff)
35
38
  report_path
36
39
  end
37
40
 
@@ -48,28 +51,26 @@ module AppEntitlementsStatistics
48
51
  report_path
49
52
  end
50
53
 
51
- def generate(capabilities_diff,usage_descs_diff)
54
+
55
+ def generate(capabilities_diff)
52
56
  return unless @versions.length > 1
53
57
  cur_version = @versions[0]
54
58
  pre_version = @versions[1]
55
-
56
- output = "\n" + "compared #{cur_version} #{pre_version}"
59
+ output = ""
57
60
  output += "\n" + capabilities_diff unless capabilities_diff.empty?
58
- output += "\n" + usage_descs_diff unless usage_descs_diff.empty?
59
- output += "\n\nThere is no difference between the two versions \n\n" unless (!capabilities_diff.empty? && !usage_descs_diff.empty?)
61
+ output += "\n\nThere is no difference between the two versions 【 #{@versions[0]} vs #{@versions[1]}】\n\n" unless !capabilities_diff.empty?
60
62
  # puts output
61
-
62
63
  output += "\n\n\n#{cur_version} entitlements list: "
63
64
  output += "\n" + read_each_line(cur_version)
64
65
  output += "\n" + "----------------------------------------"
65
66
  output += "\n\n#{pre_version} entitlements list: "
66
67
  output += "\n" + read_each_line(pre_version)
67
- output += "\n" + "----------------------------------------"
68
68
 
69
69
  report_path = report_file_name(path: @report_path)
70
70
  File.open(report_path, 'w') { |file|
71
71
  file.write(output)
72
72
  }
73
+ # puts "detail file: #{File.expand_path(report_path)}"
73
74
  report_path
74
75
  end
75
76
 
@@ -99,120 +100,97 @@ module AppEntitlementsStatistics
99
100
  yaml_content
100
101
  end
101
102
 
102
- def analyze_capabilities_diff(pre,cur)
103
+ def analyze_diff(pre,cur)
103
104
  output = ""
104
105
  cur_capabilities_summary = cur['Capabilities_Summary']
105
106
  pre_capabilities_summary = pre['Capabilities_Summary']
106
- cur_capabilities = cur['Capabilities']
107
- pre_capabilities = pre['Capabilities']
108
- output = ""
107
+
108
+ cur_usage_descs_summary = cur['PermissionsUsageDescription_Summary']
109
+ pre_usage_descs_summary = pre['PermissionsUsageDescription_Summary']
110
+
111
+ # cur_capabilities = cur['Capabilities']
112
+ # pre_capabilities = pre['Capabilities']
113
+
114
+ # cur_usage_descs = cur['PermissionsUsageDescription']
115
+ # pre_usage_descs = pre['PermissionsUsageDescription']
116
+
109
117
  # 修改
110
118
  comm_capabilities = cur_capabilities_summary.keys & pre_capabilities_summary.keys
111
- modifys = modifys_cur = modifys_pre = ""
119
+ modifyed_rows = []
112
120
  comm_capabilities.each do |key|
113
121
  if cur_capabilities_summary[key] != pre_capabilities_summary[key]
114
- modifys_cur += "\n" + '- ' + key + ': ' + cur_capabilities[key].to_s
115
- modifys_pre += "\n" + '- ' + key + ': ' + pre_capabilities[key].to_s
122
+ modifyed_rows << [ '- ' + key ]
116
123
  end
117
124
  end
118
125
 
119
- modifys += "\n" + @versions[0] unless modifys_cur.empty?
120
- modifys += modifys_cur unless modifys_cur.empty?
121
- modifys += "\n" + @versions[1] unless modifys_pre.empty?
122
- modifys += modifys_pre unless modifys_pre.empty?
123
-
124
- #新增
125
- add_capabilities = cur_capabilities_summary.keys - pre_capabilities_summary.keys
126
- adds = ""
127
- add_capabilities.each do |key|
128
- adds += "\n" + '- ' + key + ': ' + cur_capabilities[key].to_s
129
- end
130
-
131
- #移除
132
- remove_capabilities = pre_capabilities_summary.keys - cur_capabilities_summary.keys
133
- removes = ""
134
- remove_capabilities.each do |key|
135
- removes += "\n" + '- ' + key + ': ' + pre_capabilities[key].to_s
136
- end
137
-
138
- if !modifys.empty?
139
- output += "\n" + "modify capabilitys : "
140
- output += modifys
141
- output += "\n------------------------------"
142
- end
143
-
144
- if !adds.empty?
145
- output += "\n" + "add capabilitys : "
146
- output += adds
147
- output += "\n------------------------------"
148
- end
149
-
150
- if !removes.empty?
151
- output += "\n" + "remove capabilitys : "
152
- output += removes
153
- output += "\n------------------------------"
154
- end
155
-
156
- output
157
- end
158
-
159
- def analyze_usage_descs_diff(pre,cur)
160
- output = ""
161
- cur_usage_descs_summary = cur['PermissionsUsageDescription_Summary']
162
- pre_usage_descs_summary = pre['PermissionsUsageDescription_Summary']
163
-
164
- cur_usage_descs = cur['PermissionsUsageDescription']
165
- pre_usage_descs = pre['PermissionsUsageDescription']
166
-
167
- # 修改
168
126
  comm_usage_descs = cur_usage_descs_summary.keys & pre_usage_descs_summary.keys
169
- modifys = modifys_cur = modifys_pre = ""
170
127
  comm_usage_descs.each do |key|
171
128
  if cur_usage_descs_summary[key] != pre_usage_descs_summary[key]
172
- modifys_cur += "\n" + '- ' + key + ': ' + cur_usage_descs[key].to_s
173
- modifys_pre += "\n" + '- ' + key + ': ' + pre_usage_descs[key].to_s
129
+ modifyed_rows << [ '- ' + key ]
174
130
  end
175
131
  end
176
132
 
177
- modifys += "\n" + @versions[0] unless modifys_cur.empty?
178
- modifys += modifys_cur unless modifys_cur.empty?
179
- modifys += "\n" + @versions[1] unless modifys_pre.empty?
180
- modifys += modifys_pre unless modifys_pre.empty?
181
133
 
182
134
  #新增
135
+ add_capabilities = cur_capabilities_summary.keys - pre_capabilities_summary.keys
136
+ added_rows = []
137
+ add_capabilities.each do |key|
138
+ added_rows << ['- ' + key ] #+ ': ' + cur_capabilities[key].to_s
139
+ end
140
+
183
141
  add_usage_descs = cur_usage_descs_summary.keys - pre_usage_descs_summary.keys
184
- adds = ""
185
142
  add_usage_descs.each do |key|
186
- adds += "\n" + '- ' + key + ': ' + cur_usage_descs[key].to_s
143
+ added_rows << [ '- ' + key ] #+ ': ' + cur_usage_descs[key].to_s
187
144
  end
188
145
 
189
146
  #移除
147
+ remove_capabilities = pre_capabilities_summary.keys - cur_capabilities_summary.keys
148
+ removed_rows = []
149
+ remove_capabilities.each do |key|
150
+ removed_rows << ['- ' + key ] #+ ': ' + pre_capabilities[key].to_s
151
+ end
152
+
190
153
  remove_usage_descs = pre_usage_descs_summary.keys - cur_usage_descs_summary.keys
191
- removes = ""
192
154
  remove_usage_descs.each do |key|
193
- removes += "\n" + '- ' + key + ': ' + pre_usage_descs[key].to_s
155
+ removed_rows << [ '- ' + key ] #+ ': ' + pre_usage_descs[key].to_s
194
156
  end
195
157
 
196
- if !modifys.empty?
197
- output += "\n" + "modify permissions usage description : "
198
- output += modifys
199
- output += "\n------------------------------"
158
+ # Summary
159
+ max_count = [modifyed_rows.size,added_rows.size,removed_rows.size].max
160
+ if max_count == 0
161
+ return output
200
162
  end
201
163
 
202
- if !adds.empty?
203
- output += "\n" + "add permissions usage description : "
204
- output += adds
205
- output += "\n------------------------------"
164
+ table = Terminal::Table.new do |t|
165
+ t.title = "Compared #{@versions[0]} to #{@versions[1]} Summary"
166
+ t.add_row ["Modifyed", modifyed_rows.size ]
167
+ t.add_row ["New", added_rows.size ]
168
+ t.add_row ["Remove", removed_rows.size ]
206
169
  end
170
+ output += table.to_s + "\n\n"
207
171
 
208
- if !removes.empty?
209
- output += "\n" + "remove permissions usage description : "
210
- output += removes
211
- output += "\n------------------------------"
172
+ def get_value(arr,n)
173
+ return "" unless arr.length > n
174
+ return arr[n].first unless arr.length == 0
175
+ return ""
212
176
  end
213
177
 
178
+ detail_table = Terminal::Table.new do |t|
179
+ t.headings = ['Modifyed', 'New', 'Remove']
180
+ (0..max_count-1).each do |n|
181
+ t.add_row [
182
+ get_value(modifyed_rows,n),
183
+ get_value(added_rows,n),
184
+ get_value(removed_rows,n),
185
+ ]
186
+ end
187
+ end
188
+ output += detail_table.to_s + "\n\n"
214
189
  output
215
- end
190
+ end
191
+
216
192
  end
193
+ end
217
194
 
218
- end
195
+ obj = AppEntitlementsStatistics::Analyzer.new('com.ola.chat')
196
+ obj.analyze(["5.3.0","5.2.0"])
@@ -1,3 +1,3 @@
1
1
  module CocoapodsEntitlementsStatistics
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-entitlements-statistics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - bin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-03 00:00:00.000000000 Z
11
+ date: 2023-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yaml
@@ -106,6 +106,20 @@ dependencies:
106
106
  - - ">="
107
107
  - !ruby/object:Gem::Version
108
108
  version: '0'
109
+ - !ruby/object:Gem::Dependency
110
+ name: terminal-table
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ type: :development
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
109
123
  description: A short description of cocoapods-entitlements-statistics.
110
124
  email:
111
125
  - tang.bin@olaola.chat
@@ -118,7 +132,6 @@ files:
118
132
  - LICENSE.txt
119
133
  - README.md
120
134
  - Rakefile
121
- - cocoapods-entitlements-statistics.gemspec
122
135
  - lib/cocoapods-entitlements-statistics.rb
123
136
  - lib/cocoapods-entitlements-statistics/app_entitlements_statistics/analyze.rb
124
137
  - lib/cocoapods-entitlements-statistics/app_entitlements_statistics/core_ext/inflector.rb
@@ -1,27 +0,0 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'cocoapods-entitlements-statistics/gem_version.rb'
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = 'cocoapods-entitlements-statistics'
8
- spec.version = CocoapodsEntitlementsStatistics::VERSION
9
- spec.authors = ['bin']
10
- spec.email = ['tang.bin@olaola.chat']
11
- spec.description = %q{A short description of cocoapods-entitlements-statistics.}
12
- spec.summary = %q{A longer description of cocoapods-entitlements-statistics.}
13
- spec.homepage = 'https://github.com/EXAMPLE/cocoapods-entitlements-statistics'
14
- spec.license = 'MIT'
15
-
16
- spec.files = `git ls-files`.split($/)
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ['lib']
20
-
21
- spec.add_runtime_dependency "yaml"
22
- spec.add_runtime_dependency "crimp"
23
- spec.add_dependency 'CFPropertyList', '< 3.1.0', '>= 2.3.4'
24
- spec.add_development_dependency 'bundler', '>= 1.12'
25
- spec.add_dependency 'rubyzip', '>= 1.2', '< 3.0'
26
- spec.add_development_dependency 'rake'
27
- end