pod-target 0.2.2 → 0.3.0

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: 92493f8e310f8b60bbceb4950aa365d473ed6541af360906cfc4b5f4e6fc8953
4
- data.tar.gz: 973726e0dace6c66dc32222bcd632bf8f4929def24b3ee0f9bc9ae6abb2e4882
3
+ metadata.gz: cabccf59c7954023e0392edd2e30f65ffb2192511b27b2bbaca8451f8c09fe08
4
+ data.tar.gz: 475498fbf859ce5c2e8ab2e572bca243d4c608acb254ff8f9748251ff6821ed1
5
5
  SHA512:
6
- metadata.gz: e89a1fdbd67cbda451ab92ee4bafff6280e0342d8e0c389132737c049a840ba9b255d250b30ba17464ae1fe571e671617f663683c6a5732a86508e055cf9aa64
7
- data.tar.gz: 5fb02e0de8cfaf7a46aff9c5903839c2ef4f9fc9fdead3815ab95fdbd9b10ffe253a41e7e9576978f1ee69ab833e71f694710fe1a088f9a276c551bd6e136963
6
+ metadata.gz: 0e47a241a046b7c5afbdc55abdb973407ae849c1c07e6a7e6e8b4b4cb3f254d2aa4f3aa93924f112c9e59bf4efdd3272c690ac4552f59d0acf60d6f4791d03ba
7
+ data.tar.gz: 72d2514d303e4d9fe01ba367a161f89c90a38bb24d313e4e29150dbaec0a2dafb607f40e2cc5e115f8390b98ebddef7c022ba57835109062ad660293c1581221
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.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pod-target (0.2.2)
4
+ pod-target (0.3.0)
5
5
  thor
6
6
  xcodeproj (~> 1.7)
7
7
 
@@ -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")
@@ -62,24 +64,30 @@ module Pod
62
64
  exit 1
63
65
  else
64
66
  graphviz = GraphViz.new(type: :digraph)
65
- level_map = {}
66
- graph.dfs2(node, level_map, 0)
67
- visited = Set.new([])
68
- dfs(graphviz, node, visited, level_map)
67
+ parent = {}
68
+ dfs(graphviz, node, graph, parent, 0)
69
69
  graphviz
70
70
  end
71
71
  end
72
72
 
73
- def dfs(graphviz, node, visited, level_map)
74
- return if visited.include?(node.name)
75
- visited.add(node.name)
76
- 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
77
77
  target_node = graphviz.add_node(node.name)
78
+ level_map = {}
79
+ graph.dfs(node, level_map, 0)
78
80
  node.neighbors.each do |dependency|
79
- if level_map[dependency.name] == depth+1
80
- dep_node = graphviz.add_node(dependency.name)
81
- graphviz.add_edge(target_node, dep_node)
82
- 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
83
91
  end
84
92
  end
85
93
  end
@@ -1,5 +1,5 @@
1
1
  module Pod
2
2
  module Target
3
- VERSION = "0.2.2"
3
+ VERSION = "0.3.0"
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.2
4
+ version: 0.3.0
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-18 00:00:00.000000000 Z
11
+ date: 2021-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xcodeproj