pod-target 0.2.0 → 0.3.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 +4 -4
- data/.idea/modules.xml +0 -1
- data/Gemfile +2 -1
- data/Gemfile.lock +3 -2
- data/lib/pod/target/cli.rb +2 -0
- data/lib/pod/target/commands/resolve/graph.rb +0 -12
- data/lib/pod/target/commands/target.rb +29 -16
- data/lib/pod/target/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9c07fda75a108a3e43385e3a814087608b79e5e132a76f2095846c820d1c08be
|
4
|
+
data.tar.gz: 4d7b525d33f96c4c88afefa61af691be7afd145664c077ab10d4fccd6b7ed579
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4cc1b3ae11563e15ea370e594d18987c2ff8ef166322bbbf18e70fcd88723d45511c6349e98251198f726c77b382ac0306442facc59230184e31adc45a76844f
|
7
|
+
data.tar.gz: f6f6535f397e1b34dba9d0ee9e046cf7abf62aeb3d877145a791f3b2c5c986e88d8b9f1b5e04fa91bfc6547a4847af1ac88f4c67c46aaf42fb05fb34825ea7d8
|
data/.idea/modules.xml
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
<project version="4">
|
3
3
|
<component name="ProjectModuleManager">
|
4
4
|
<modules>
|
5
|
-
<module fileurl="file://$USER_HOME$/Learning/pandan/.idea/pandan.iml" filepath="$USER_HOME$/Learning/pandan/.idea/pandan.iml" />
|
6
5
|
<module fileurl="file://$PROJECT_DIR$/.idea/pod-target.iml" filepath="$PROJECT_DIR$/.idea/pod-target.iml" />
|
7
6
|
</modules>
|
8
7
|
</component>
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
data/lib/pod/target/cli.rb
CHANGED
@@ -24,6 +24,8 @@ module Pod
|
|
24
24
|
desc: 'Set name of the root target, must be set'
|
25
25
|
method_option :workspace, type: :string,
|
26
26
|
desc: "Set workspace path, if not set will use current directory"
|
27
|
+
method_option :max_depth, type: :numeric,
|
28
|
+
desc: "Set max depth of the graph, if not set will traverse the whole graph"
|
27
29
|
method_option :output, type: :string,
|
28
30
|
desc: "Set output path of csv file, if not set will use current directory"
|
29
31
|
def target(*)
|
@@ -64,18 +64,6 @@ module Pod
|
|
64
64
|
dfs(neighbor, level_map, depth+1)
|
65
65
|
end
|
66
66
|
end
|
67
|
-
|
68
|
-
def dfs2(node, level_map, depth)
|
69
|
-
name = node.name
|
70
|
-
if level_map.key?(name)
|
71
|
-
level_map[name] = [level_map[name], depth].max
|
72
|
-
else
|
73
|
-
level_map[name] = depth
|
74
|
-
end
|
75
|
-
node.neighbors.each do |neighbor|
|
76
|
-
dfs2(neighbor, level_map, depth+1)
|
77
|
-
end
|
78
|
-
end
|
79
67
|
end
|
80
68
|
end
|
81
69
|
end
|
@@ -21,6 +21,8 @@ module Pod
|
|
21
21
|
@output = @options[:output]
|
22
22
|
@output ||= '.'
|
23
23
|
@root = @options[:root]
|
24
|
+
@max_depth = @options[:max_depth]
|
25
|
+
@max_depth ||= -1
|
24
26
|
if @root.nil?
|
25
27
|
prompt = TTY::Prompt.new
|
26
28
|
prompt.error("Root target is not set")
|
@@ -40,9 +42,10 @@ module Pod
|
|
40
42
|
tmp_file = File.join(dir, '/dependencies.gv')
|
41
43
|
save_gv(graphviz_data(graph), tmp_file)
|
42
44
|
graphviz_graph = GraphViz.parse(tmp_file)
|
43
|
-
|
45
|
+
file = File.join(dir, '/' + @root + '-dependencies.png')
|
46
|
+
save_png(graphviz_graph, file)
|
44
47
|
FileUtils.remove_file(tmp_file)
|
45
|
-
prompt.ok("File is write at: " + dir + "/dependencies.png")
|
48
|
+
prompt.ok("File is write at: " + dir + "/" + @root + "-dependencies.png")
|
46
49
|
end
|
47
50
|
|
48
51
|
def save_gv(graphviz_data, filename)
|
@@ -54,27 +57,37 @@ module Pod
|
|
54
57
|
end
|
55
58
|
|
56
59
|
def graphviz_data(graph)
|
57
|
-
node = graph.nodes.values.find { |node| node.name
|
58
|
-
|
60
|
+
node = graph.nodes.values.find { |node| node.name == @root }
|
61
|
+
if node.nil?
|
62
|
+
prompt = TTY::Prompt.new
|
63
|
+
prompt.error("Cannot find root target")
|
64
|
+
exit 1
|
65
|
+
else
|
59
66
|
graphviz = GraphViz.new(type: :digraph)
|
60
|
-
|
61
|
-
|
62
|
-
visited = Set.new([])
|
63
|
-
dfs(graphviz, node, visited, level_map)
|
67
|
+
parent = {}
|
68
|
+
dfs(graphviz, node, graph, parent, 0)
|
64
69
|
graphviz
|
65
70
|
end
|
66
71
|
end
|
67
72
|
|
68
|
-
def dfs(graphviz, node,
|
69
|
-
|
70
|
-
|
71
|
-
|
73
|
+
def dfs(graphviz, node, graph, parent, depth)
|
74
|
+
if @max_depth != -1 && depth == @max_depth
|
75
|
+
return
|
76
|
+
end
|
72
77
|
target_node = graphviz.add_node(node.name)
|
78
|
+
level_map = {}
|
79
|
+
graph.dfs(node, level_map, 0)
|
73
80
|
node.neighbors.each do |dependency|
|
74
|
-
if level_map[dependency.name] ==
|
75
|
-
|
76
|
-
|
77
|
-
|
81
|
+
if level_map[dependency.name] == 1
|
82
|
+
if parent.key?(dependency.name) == false
|
83
|
+
parent[dependency.name] = Set.new
|
84
|
+
end
|
85
|
+
if parent[dependency.name].include?(node.name) == false
|
86
|
+
parent[dependency.name].add(node.name)
|
87
|
+
dep_node = graphviz.add_node(dependency.name)
|
88
|
+
graphviz.add_edge(target_node, dep_node)
|
89
|
+
dfs(graphviz, dependency, graph, parent, depth+1)
|
90
|
+
end
|
78
91
|
end
|
79
92
|
end
|
80
93
|
end
|
data/lib/pod/target/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pod-target
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bao Do
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-10-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: xcodeproj
|
@@ -99,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
99
99
|
- !ruby/object:Gem::Version
|
100
100
|
version: '0'
|
101
101
|
requirements: []
|
102
|
-
rubygems_version: 3.
|
102
|
+
rubygems_version: 3.0.3
|
103
103
|
signing_key:
|
104
104
|
specification_version: 4
|
105
105
|
summary: '"Retrive targets'' dependencies and optimize them"'
|