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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4c295b45538525799e71dfab6879e9919289ffcd5dc92a36004ea9d0f1e809c7
4
- data.tar.gz: d470fd27f32dce46cf517de02bca2c2b1d9a4f4bf9c7eb823352dddf22051641
3
+ metadata.gz: 9c07fda75a108a3e43385e3a814087608b79e5e132a76f2095846c820d1c08be
4
+ data.tar.gz: 4d7b525d33f96c4c88afefa61af691be7afd145664c077ab10d4fccd6b7ed579
5
5
  SHA512:
6
- metadata.gz: 7db41989940fc351f282ab6d154e0dbfac5cb914715fdb29f03cedb0841f46f0ba24b74fbebc5a27c1860294345758df87d69d0480b786a3317a2a659a160e15
7
- data.tar.gz: a8a6be9427993f40fd5c5548c08e554ad9b958a3fd5f5a9619b569d8cb4e61f27a052530d56516947769a4ee9fc276e718862418e35cc331d157bd3d74afb291
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
@@ -6,4 +6,5 @@ gemspec
6
6
  gem "rake", "~> 12.0"
7
7
  gem "rspec", "~> 3.0"
8
8
  gem 'tty'
9
- gem 'ruby-graphviz'
9
+ gem 'ruby-graphviz'
10
+ gem 'tty-prompt'
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pod-target (0.2.0)
4
+ pod-target (0.3.0)
5
5
  thor
6
6
  xcodeproj (~> 1.7)
7
7
 
@@ -98,6 +98,7 @@ DEPENDENCIES
98
98
  rspec (~> 3.0)
99
99
  ruby-graphviz
100
100
  tty
101
+ tty-prompt
101
102
 
102
103
  BUNDLED WITH
103
- 2.1.2
104
+ 2.1.4
@@ -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
- save_png(graphviz_graph, 'dependencies.png')
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 =~ /#{@root}/ }
58
- unless node.nil?
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
- level_map = {}
61
- graph.dfs2(node, level_map, 0)
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, visited, level_map)
69
- return if visited.include?(node.name)
70
- visited.add(node.name)
71
- depth = level_map[node.name]
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] == depth+1
75
- dep_node = graphviz.add_node(dependency.name)
76
- graphviz.add_edge(target_node, dep_node)
77
- dfs(graphviz, dependency, visited, level_map)
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
@@ -1,5 +1,5 @@
1
1
  module Pod
2
2
  module Target
3
- VERSION = "0.2.0"
3
+ VERSION = "0.3.1"
4
4
  end
5
5
  end
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.2.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-05-16 00:00:00.000000000 Z
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.1.2
102
+ rubygems_version: 3.0.3
103
103
  signing_key:
104
104
  specification_version: 4
105
105
  summary: '"Retrive targets'' dependencies and optimize them"'