itools 0.5.0 → 1.1.5

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: bf38167231314d38da1f2027c16c24df9cd7419205c154e6bf8591fe89d58133
4
- data.tar.gz: ecbcb2405ee49c04d97de632f10d56ff4f2a17f26679fb7d0ed72bca3e0278c9
3
+ metadata.gz: 231409dd71fbd6f84598d2270edc928ad0288089b0bdb9536632cc832ed20bae
4
+ data.tar.gz: a64240894bfa6a17fcf0d4d63050378cf5c8e9cc4f6239ff0329d0cce0eff302
5
5
  SHA512:
6
- metadata.gz: 9d233beb82f1909ef00e6791789caae405cd852763fa2d5590cbe469a81f710b0e1358812da22b452359dd55f21f85ba8ee5b1290ecdecdbdd05ec15be7a9f25
7
- data.tar.gz: 7684e2bafc4abc09757f3dbf96f316f44b6172b68cc532b5edb25a579db57ea3103d04ffd3b774dbbc822984e1cddd72304dde7e149c560f7874670803583061
6
+ metadata.gz: '049cbfd7152daa2944833d1d3f7cae6ef40a00725c2811f02779105919b34a09cf3fe94cf33c034aa1801646e169437eed0808e818282de8d1333b64a1565719'
7
+ data.tar.gz: d9e790bc02448e7d0c9e0516527333f02ed1a834138a5d35dbfd186e0f83be6ada8e29c83aa1dc0f4733040299f437b2ed0848de8bf0ba69f4e1cd1794c25e44
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- ruby-2.3.7
1
+ ruby-2.4.0
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- itools (0.5.0)
4
+ itools (1.1.5)
5
5
  bundler (~> 1.17)
6
6
  git (~> 1.5)
7
7
  gli (~> 2.17)
@@ -11,11 +11,13 @@ PATH
11
11
  GEM
12
12
  remote: https://rubygems.org/
13
13
  specs:
14
- git (1.5.0)
15
- gli (2.18.0)
14
+ git (1.7.0)
15
+ rchardet (~> 1.8)
16
+ gli (2.20.0)
16
17
  rake (10.5.0)
17
- ruby-ole (1.2.12.1)
18
- spreadsheet (1.1.8)
18
+ rchardet (1.8.0)
19
+ ruby-ole (1.2.12.2)
20
+ spreadsheet (1.2.6)
19
21
  ruby-ole (>= 1.0)
20
22
 
21
23
  PLATFORMS
@@ -25,4 +27,4 @@ DEPENDENCIES
25
27
  itools!
26
28
 
27
29
  BUNDLED WITH
28
- 1.17.1
30
+ 1.17.3
data/README.md CHANGED
@@ -19,7 +19,7 @@ SYNOPSIS
19
19
  itools [global options] command [command options] [arguments...]
20
20
 
21
21
  VERSION
22
- 0.4.9
22
+ 1.0.0
23
23
 
24
24
  GLOBAL OPTIONS
25
25
  --help - Show this message
@@ -40,7 +40,7 @@ COMMANDS
40
40
  ### 功能1:解析LinkMap
41
41
  命令:
42
42
  ```shell
43
- itools parse LinkMapDemo-LinkMap-normal-arm64.txt
43
+ itools parse LinkMapDemo-LinkMap-normal-arm64.txt (分析文件夹)
44
44
  # or
45
45
  itools parse /user/Desk/LinkMapDemo-LinkMap-normal-arm64.txt
46
46
  ```
@@ -56,8 +56,8 @@ Foundation.tbd 24B
56
56
  UIKit.tbd 24B
57
57
  Total Size:10.07KB
58
58
  ```
59
- For more information, see:[https://www.cnblogs.com/zhanggui/p/9991455.html](https://www.cnblogs.com/zhanggui/p/9991455.html)
60
-
59
+ For more information, see:[https://www.cnblogs.com/zhanggui/p/9991455.html](https://www.cnblogs.com/zhanggui/p/9991455.html)
60
+ 也可以根据linkmap按照folder解析,即传入第二个参数为分析的引用库目录,例如想查看AFNetWorking中各个文件夹(内容)所占二进制的大小。
61
61
  ### 功能2:字符串查找
62
62
  命令
63
63
  ```ruby
data/bin/itools CHANGED
@@ -79,4 +79,12 @@ command :pre_commit do |c|
79
79
  Itools::GitSets.commit_msg_init(args)
80
80
  end
81
81
  end
82
+ #本地commit规范化
83
+ desc "通过执行该命令,可以将podfile.lock中所有的依赖平铺至Podifle中"
84
+ arg 'podfile.lock'
85
+ command :podfile_tiled do |c|
86
+ c.action do |global_options,options, args|
87
+ Itools::PodfileTiled.podfile_tiled(args)
88
+ end
89
+ end
82
90
  exit run(ARGV)
@@ -64,6 +64,7 @@ module Itools
64
64
  sheet1.row(0)[0] = "序号"
65
65
  sheet1.row(0)[1] = "文件名"
66
66
  sheet1.row(0)[2] = "文件路径"
67
+ sheet1.row(0)[3] = "文件占用内存大小"
67
68
  total_size = 0
68
69
  @classes.each_with_index{|r_item,f_index|
69
70
  # if !r_item.fr_name.include?("+")
@@ -81,11 +81,13 @@ module Itools
81
81
  sheet1 = book.create_worksheet
82
82
  sheet1.row(0)[0] = "文件名"
83
83
  sheet1.row(0)[1] = "文件路径"
84
+ sheet1.row(0)[2] = "文件大小(B)"
84
85
  imags.each_with_index {|item,idx|
85
86
  sheet1.row(idx+1)[0] = item
86
87
  path = imgFinder.get_image_path(item)
87
88
  sheet1.row(idx+1)[1] = path
88
89
  unuse_total_size = unuse_total_size + File.size(path)
90
+ sheet1.row(idx+1)[2] = File.size(path)
89
91
  puts item
90
92
  }
91
93
  book.write "#{imgFinder.find_path}/search_result.xls"
@@ -42,6 +42,7 @@ module Itools
42
42
  file_count = 0
43
43
  total_count = 0
44
44
  total_size = 0
45
+ file_size = 0
45
46
  Find.find(folder) do |filename|
46
47
  if File.file?(filename)
47
48
  total_count = total_count + 1
@@ -52,15 +53,16 @@ module Itools
52
53
  elsif file_exts.include?(File.extname(filename).delete(".")) #查找指定后缀的文件
53
54
  sum = sum + File.size(filename)
54
55
  file_count = file_count + 1
56
+ file_size = file_size + File.size(filename)
55
57
  else
56
58
  #不做任何处理
57
59
  end
58
60
  end
59
61
  end
60
62
  if file_exts.size == 0
61
- puts "\033[32m文件夹中共#{total_count}个文件,共#{get_show_size(total_size)}\033[0m"
63
+ puts "\033[32m文件夹中共#{total_count}个文件,共#{get_show_size(total_size)}(#{total_size})\033[0m"
62
64
  else
63
- puts "\033[32m文件夹中共#{total_count}个文件,共#{get_show_size(total_size)};找到后缀为(#{file_exts_string})的文件#{file_count}个,共#{get_show_size(sum)}.\033[0m"
65
+ puts "\033[32m文件夹中共#{total_count}个文件,共#{get_show_size(total_size)}(#{total_size});找到后缀为(#{file_exts_string})的文件#{file_count}个,共#{get_show_size(file_size)}(#{file_size}).\033[0m"
64
66
  end
65
67
 
66
68
  # puts `du -b #{folder} | awk '{print $1}'`.to_i
@@ -138,6 +138,11 @@ module Itools
138
138
  handle_method_name = "handle_sections"
139
139
  puts "处理Sections..."
140
140
  elsif line.include?("Symbols:") #symbols:和Dead Stripped Symbols处理一样
141
+ # 这里不处理Dead Stripped Symbols
142
+ if line.delete('#').strip.include?("Dead Stripped Symbols")
143
+ puts "不处理处理#{line.delete('#').strip}..."
144
+ break
145
+ end
141
146
  puts "处理#{line.delete('#').strip}..."
142
147
  handle_method_name = "handle_symbols"
143
148
  end
@@ -227,7 +232,7 @@ module Itools
227
232
  # 打印结果
228
233
  sizeResultArr.each do |obj|
229
234
  puts "#{obj.file_name} " + SizeResult.handleSize(obj.size)
230
- save_file.puts("#{obj.file_name} #{SizeResult.handleSize(obj.size)}")
235
+ save_file.puts("#{obj.file_name} #{SizeResult.handleSize(obj.size)}(#{obj.size})")
231
236
  end
232
237
  save_file.puts("总大小为:#{SizeResult.handleSize(total_size)}")
233
238
  save_file.close
@@ -301,8 +306,10 @@ module Itools
301
306
  File.delete(save_file_path)
302
307
  end
303
308
  save_file = File.new(save_file_path,"w+")
309
+ o_index = 2
304
310
  size_results.each do |o|
305
- save_file.puts("#{' ' * o.space_count}|- #{o.folder_name.split('/').last} #{SizeResult.handleSize(o.size)}")
311
+ result_str = "#{' ' * o.space_count}├── #{o.folder_name.split('/').last} #{SizeResult.handleSize(o.size)}(#{o.size})"
312
+ save_file.puts(result_str)
306
313
  end
307
314
  save_file.close
308
315
  puts "分析结果已经保存为文件,位置为:\n\033[32m#{save_file_path}\033[0m"
@@ -313,7 +320,8 @@ module Itools
313
320
  space_index = space_index + 2
314
321
  file_name_arr = [] #盛放计算过的类
315
322
  Find.find(file_path) do |file|
316
- if File.file?(file)
323
+ # 不包含图片
324
+ if File.file?(file) && !(File.extname(file) =~ /(png|gif|jpg|bmp|jpeg)/)
317
325
  file_name = File.basename(file,".*")
318
326
  if !file_name_arr.include?(file_name) && sort_by_obj_files_map[file_name] #没有已经计算过
319
327
  s_result.size = s_result.size + sort_by_obj_files_map[file_name][0].o_size
@@ -350,7 +358,7 @@ module Itools
350
358
  def self.getSaveFileName(path_para)
351
359
  path = Pathname.new(path_para)
352
360
  # 要保存的地址
353
- save_file_path = path.dirname.to_s + "/" + "parse_" + path.basename.to_s + "_result.txt"
361
+ save_file_path = path.dirname.to_s + "/" + "parse_" + path.basename.to_s + "_result(#{Time.new.strftime("%Y%m%d%H%M%S")}).txt"
354
362
  return save_file_path
355
363
  end
356
364
  end
@@ -0,0 +1,95 @@
1
+ module Itools
2
+ class PodInfo
3
+ attr_accessor :pod_name, :pod_version
4
+ def initialize(name, version)
5
+ @pod_name = name
6
+ @pod_version = version
7
+ end
8
+ end
9
+ class PodfileTiled
10
+ def self.podfile_tiled(args)
11
+ all_pods = [] #所有依赖的pod
12
+ exist_pods = [] #当前podfile已经存在的pod
13
+ need_add_pods = [] #当前需要添加到podfile中的pod
14
+ pod_tag = 1
15
+
16
+ fileInfo = File.open(args[0])
17
+
18
+ total_index = 0
19
+ fileInfo.each_line do |line|
20
+ line_string = line.delete("\n")
21
+ if line_string == 'PODS:'
22
+ # 配置成功,后续请直接使用git commit ,不要加 -m\033[0m
23
+ puts "\033[32m开始分析依赖\033[0m"
24
+ pod_tag = 1
25
+ next
26
+ elsif line_string == 'DEPENDENCIES:'
27
+ puts "\033[32m开始分析当前Podfile中已添加的依赖项\033[0m"
28
+ pod_tag = 2
29
+ next
30
+ elsif line_string == 'SPEC REPOS:'
31
+ pod_tag = 0
32
+ puts "\033[32mpodfile.lock分析结束\033[0m"
33
+ end
34
+
35
+ if pod_tag == 1 #分析所有pod
36
+ if line_string[0, 3] == ' -' && !line_string.include?('/')
37
+ # puts line_string
38
+ pod_version = line_string[/\((.*?)\)/, 1]
39
+ pod_name =
40
+ line_string.gsub(pod_version, '').delete('(').delete(')').delete(
41
+ ':'
42
+ ).delete('-').strip
43
+ temp_pod = PodInfo.new(pod_name, pod_version)
44
+ all_pods << temp_pod
45
+ puts "查找到pod库:#{pod_name}, 版本号为:'#{pod_version}' #{all_pods.length}"
46
+ end
47
+ end
48
+
49
+ if pod_tag == 2 #分析当前podfile已经有的pod
50
+ pod_name
51
+ pod_version = line_string[/\((.*?)\)/, 1]
52
+ if pod_version
53
+ pod_name =
54
+ line_string.gsub(pod_version, '').delete('(').delete(')').delete(
55
+ ':'
56
+ ).delete('-').strip
57
+ else
58
+ pod_name = line_string.delete('-').lstrip.rstrip
59
+ end
60
+
61
+ if pod_name.length == 0 || pod_name.include?('/')
62
+ next
63
+ end
64
+ temp_pod = PodInfo.new(pod_name, pod_version)
65
+ if pod_version
66
+ temp_pod.pod_version = pod_version.delete('=').strip
67
+ end
68
+
69
+ exist_pods << temp_pod
70
+ puts "Podfile中已包含 #{pod_name}, 版本号为:'#{pod_version}'"
71
+ end
72
+ end
73
+ temp_exist_pods = []
74
+ all_pods.each do |all_pod|
75
+ exist_pods.each do |exist_pod|
76
+ if all_pod.pod_name == exist_pod.pod_name
77
+ temp_exist_pods << all_pod
78
+ end
79
+ end
80
+ end
81
+
82
+ need_add_pods = all_pods - temp_exist_pods
83
+ if need_add_pods.length == 0
84
+ puts "\033[32m恭喜!!!无需平铺,当前已全部平铺\033[0m"
85
+ else
86
+ puts "\033[32m以下为要平铺的库,直接复制粘贴至Podfile中即可:\033[0m"
87
+ need_add_pods.each do |to_add|
88
+ puts "pod '#{to_add.pod_name}', '#{to_add.pod_version}'"
89
+ end
90
+ end
91
+
92
+ end
93
+ end
94
+ end
95
+
@@ -1,3 +1,4 @@
1
1
  module Itools
2
- VERSION = "0.5.0"
2
+ VERSION = "1.1.5"
3
+
3
4
  end
data/lib/itools.rb CHANGED
@@ -6,4 +6,5 @@ require "itools/get_size"
6
6
  require "itools/file_handle"
7
7
  require "itools/class_unuse_finder"
8
8
  require "itools/count_code_line"
9
- require "itools/git_sets"
9
+ require "itools/git_sets"
10
+ require "itools/podfile_tiled"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: itools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 1.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - zhanggui
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-25 00:00:00.000000000 Z
11
+ date: 2021-12-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -113,6 +113,7 @@ files:
113
113
  - lib/itools/get_size.rb
114
114
  - lib/itools/git_sets.rb
115
115
  - lib/itools/link_map.rb
116
+ - lib/itools/podfile_tiled.rb
116
117
  - lib/itools/string_searcher.rb
117
118
  - lib/itools/temple-commit-msg.dat
118
119
  - lib/itools/version.rb
@@ -124,7 +125,7 @@ metadata:
124
125
  homepage_uri: https://github.com/ScottZg/itools
125
126
  source_code_uri: https://github.com/ScottZg/itools
126
127
  changelog_uri: https://github.com/ScottZg/itools/blob/master/README.md
127
- post_install_message:
128
+ post_install_message:
128
129
  rdoc_options: []
129
130
  require_paths:
130
131
  - lib
@@ -139,9 +140,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
140
  - !ruby/object:Gem::Version
140
141
  version: '0'
141
142
  requirements: []
142
- rubyforge_project:
143
- rubygems_version: 2.7.8
144
- signing_key:
143
+ rubygems_version: 3.0.9
144
+ signing_key:
145
145
  specification_version: 4
146
146
  summary: iOS tools
147
147
  test_files: []