podfileDep 2.6.0 → 2.7.1

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: e48070d532b39c76d3f4f7084952916e280eb3eca8c2bfd1dae6cb834dd36c99
4
- data.tar.gz: db121163f7c02f5d13215452f22936d160bb3daada7463564cebdd4744f6d6f0
3
+ metadata.gz: 12cedbc27748544e9a2c8034f600479e4074873cef6df41d6060e4211efebce3
4
+ data.tar.gz: a8d300437659f498422a77c7f135f6293a8f130605e4480743d593d09a67abd0
5
5
  SHA512:
6
- metadata.gz: 14a499d954f0ed310ece1893dd7c97e196f82422a077f1d53c06bb4db96359a313e687be57dde9827c474c86c127d6b5d785bb82228b67234df1f861fa80d63b
7
- data.tar.gz: c87b284a26fec791c69160228e54896e58cb42a7a376745a7649e8fd47fb3978af0dd1eeffdcfabac1c9f599e86e604c8870c8f59e7f564558d3ce7ec97c766f
6
+ metadata.gz: a8b60da680d26b9cf68edab608f0fa7706c2b6c4f7446a8d4abe1d0c325d8fcc8bbe75ee0848da079858da62663d1927ba4a5d524746d337a4a7a750b07d5683
7
+ data.tar.gz: 60a62b90fa41f2e1c533b98cf9c0339e466c13a1e63f4d5ecfdc8c7f5461f897e37715dee616588e56ca912790dd8d91c8d54125a099d042e3d3919a660c5c44
data/CHANGELOG.md CHANGED
@@ -1,4 +1,10 @@
1
1
  ## [Released]
2
+ ### [2.7.1] - 2024-08-08
3
+ - pod dep日志改为彩色
4
+
5
+ ### [2.7.0] - 2024-08-08
6
+ - 新增功能反转依赖的查询和打印pod dep
7
+
2
8
  ### [2.6.0] - 2024-07-17
3
9
  - 新增命令pod install all
4
10
 
@@ -1,5 +1,6 @@
1
1
  require 'cocoapods'
2
- require_relative 'podfileDep/command/all'
2
+ require_relative 'podfileDep/command/dep'
3
+ require_relative 'podfileDep/command/quick'
3
4
  require_relative 'podfileDep/command/quick'
4
5
  require_relative 'podfileDep/check/project'
5
6
  require_relative 'podfileDep/check/podspec'
@@ -0,0 +1,36 @@
1
+ require_relative '../dep/find'
2
+ require_relative '../version'
3
+ module Pod
4
+ class Command
5
+ class Dep < Command
6
+
7
+ self.summary = '从Podfile.lock文件里检索出依赖反转后的情况'
8
+
9
+ self.description = <<-DESC
10
+ 从Podfile.lock文件里检索出依赖反转后的情况
11
+ DESC
12
+
13
+ def self.options
14
+ [
15
+ %w[--name=xx xx为要查询的组件的名字],
16
+ %w[--sort 输出反转依赖时按数量从小到大排序],
17
+ ].concat(super).reject { |(name, _)| (name == '--no-ansi' or name == '--silent' or name == '--allow-root' or name == '--verbose') }
18
+ end
19
+
20
+ def initialize(argv)
21
+ super
22
+ puts "插件版本号: #{PodfileDep::VERSION}"
23
+ @name = argv.option('name')
24
+ @sort_count = argv.flag?('sort', false)
25
+ end
26
+
27
+ def run
28
+ verify_lockfile_exists!
29
+ finder = Pod::DepFinder.new
30
+ finder.find_name = @name
31
+ finder.sort_count = @sort_count
32
+ finder.find
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,119 @@
1
+ require 'yaml'
2
+ require 'colored2'
3
+
4
+ module Pod
5
+ class DepFinder
6
+
7
+ # @param [Hash] podfileLock内容
8
+ attr_accessor :lockfile_content
9
+
10
+ # @param [String] 要查询的组件名
11
+ attr_accessor :find_name
12
+
13
+ # @param [bool] 是否按数量从小到大排序
14
+ attr_accessor :sort_count
15
+
16
+ def initialize
17
+ super
18
+ init_lock
19
+ end
20
+
21
+ def init_lock
22
+ # 读取名为Podfile.lock的yaml文件, 并通过分析里面的PODS数组,输出依赖的第三方库的名字
23
+ unless File.exist?("Podfile.lock")
24
+ puts "Podfile.lock文件不存在,请先执行pod install或pod update".red
25
+ end
26
+
27
+ @sort_count = false
28
+
29
+ @lockfile_content = YAML.load_file('Podfile.lock')
30
+
31
+ end
32
+
33
+ # @api 反向依赖查询
34
+ def find
35
+
36
+ if @find_name
37
+ find_for_name
38
+ else
39
+ find_all
40
+ end
41
+ end
42
+
43
+ def find_all
44
+
45
+ reverse_map = Hash.new
46
+ # 循环遍历lockfile对象中的PODS数组
47
+ @lockfile_content['PODS'].each do |pod|
48
+ # 拿到所有的组件名
49
+ key = pod.is_a?(Hash) ? pod.keys[0] : pod
50
+ key = key.split(" (")[0]
51
+ results = find_with_name(key)
52
+
53
+ reverse_map[key] = results
54
+
55
+ end
56
+
57
+ puts ""
58
+ sorted_hash = reverse_map
59
+ if @sort_count
60
+ puts "反转后依赖如下(数量从少到多):"
61
+ sorted_hash = Hash[reverse_map.sort_by { |key, value| value.length }]
62
+ else
63
+ puts "反转后依赖如下:"
64
+ end
65
+
66
+ sorted_hash.each do |key, array|
67
+ puts "依赖#{key}的组件有(#{array.length}个):".green
68
+ array.each do |obj|
69
+ puts obj
70
+ end
71
+ puts "\n"
72
+ end
73
+
74
+ unless @sort_count
75
+ puts "==> 按数量从少到多排序,可使用pod dep --sort".yellow
76
+ end
77
+ puts "==> 查询单个依赖的情况,可使用pod dep --name=xx".yellow
78
+ end
79
+
80
+ def find_for_name
81
+ results = find_with_name(@find_name)
82
+
83
+ if results.empty?
84
+ puts "组件#{@find_name}没有被任何其他组件依赖"
85
+ return
86
+ end
87
+
88
+ puts "依赖#{@find_name}的组件有:".green
89
+ results.each do |res|
90
+ puts res
91
+ end
92
+ end
93
+
94
+ def find_with_name(name)
95
+ results = Array.new
96
+ # 循环遍历lockfile对象中的PODS数组
97
+ @lockfile_content['PODS'].each do |pod|
98
+ if pod.is_a?(Hash)
99
+ pod.values.each do |value|
100
+ # 如果value是一个数组,则判断数组中是否包含name
101
+ if value.is_a?(Array)
102
+ value.each { |sub_value|
103
+ # 这里的处理包含了子模块的情况
104
+ sub_module = sub_value.split(" (")[0]
105
+ if sub_module == name
106
+ results << pod.keys.first
107
+ end
108
+ }
109
+ end
110
+ end
111
+ end
112
+ end
113
+
114
+ # 去重
115
+ results.uniq
116
+ end
117
+ end
118
+ end
119
+
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PodfileDep
4
- VERSION = "2.6.0"
4
+ VERSION = "2.7.1"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: podfileDep
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.0
4
+ version: 2.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - 王帅朋
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-07-17 00:00:00.000000000 Z
11
+ date: 2024-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cocoapods
@@ -75,7 +75,9 @@ files:
75
75
  - lib/podfileDep/check/util.rb
76
76
  - lib/podfileDep/check/xcodeproj.rb
77
77
  - lib/podfileDep/command/all.rb
78
+ - lib/podfileDep/command/dep.rb
78
79
  - lib/podfileDep/command/quick.rb
80
+ - lib/podfileDep/dep/find.rb
79
81
  - lib/podfileDep/indirect/indirect.rb
80
82
  - lib/podfileDep/modify/modify_code.rb
81
83
  - lib/podfileDep/my_constants.rb