pod-target 0.2.2 → 0.3.2

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: 6054c784bb04c4620fec617db3d5d9b4d2287df027c3bcf9da1c32ee6b26c25d
4
+ data.tar.gz: 96bad6c3583c594c54d54127109c91f8e09b00429173363efabfa21d95444729
5
5
  SHA512:
6
- metadata.gz: e89a1fdbd67cbda451ab92ee4bafff6280e0342d8e0c389132737c049a840ba9b255d250b30ba17464ae1fe571e671617f663683c6a5732a86508e055cf9aa64
7
- data.tar.gz: 5fb02e0de8cfaf7a46aff9c5903839c2ef4f9fc9fdead3815ab95fdbd9b10ffe253a41e7e9576978f1ee69ab833e71f694710fe1a088f9a276c551bd6e136963
6
+ metadata.gz: 83685e702e873a819d7c83a6d991eca9eaf3984f444a95d0631bab9ac1ffdd10495089edbd6da4ffcc6a2ed40c9c48e95005bd92975780991a7716906d4443a4
7
+ data.tar.gz: 8720727e26c28da365284560f1cfd192b30b897c7d3b1896e0d406585925afd5d890c01131516af91060cfb9e4449d6f57cc71ccbdbc430af442332559a94225
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.2)
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
data/README.md CHANGED
@@ -10,6 +10,9 @@ A,C. The first column is the target, and the following targets are targets can b
10
10
  Moreover, we also draw dependency graph for specific target based on this idea. We remove all dependencies lika A->C, so we can see dependencie between targets clearer.
11
11
  ## Installation
12
12
 
13
+ Install graphviz:
14
+ https://graphviz.org/download/
15
+
13
16
  Add this line to your application's Gemfile:
14
17
 
15
18
  ```ruby
@@ -61,4 +64,4 @@ Everyone interacting in the pod-target project's codebases, issue trackers, chat
61
64
 
62
65
  ## Copyright
63
66
 
64
- Copyright (c) 2021 Bao Do. See [MIT License](LICENSE.txt) for further details.
67
+ Copyright (c) 2021 Bao Do. See [MIT License](LICENSE.txt) for further details.
@@ -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.2"
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.2
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: 2022-04-15 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.1
103
103
  signing_key:
104
104
  specification_version: 4
105
105
  summary: '"Retrive targets'' dependencies and optimize them"'