repo_dependency_graph 0.1.2 → 0.1.3
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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/bin/repo-dependency-graph +1 -34
- data/lib/repo_dependency_graph.rb +47 -6
- data/lib/repo_dependency_graph/version.rb +1 -1
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7df4826f35d89bded36eb7421532eff9ce3767c8
|
4
|
+
data.tar.gz: 91da00f83ba12d978cbeaf6fb869c6e013bbf2de
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c92fe571e36fe8d8e7b2c966f244e5337fe84cb67cae60eae1285b6fdea2bfd6fe93638aa8b556c6a78d62705e5b3832c5db2259117d7c9e2aeb770dd43ff2fc
|
7
|
+
data.tar.gz: 3b2a3ceb6ff041a123919b3fec2a69e9a5f7b3bc254641dde781349a559828a188f110da87d844a33ff29ed76f2d01b76085685fc0e6247cd5e3e5adeb26f2ae
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/bin/repo-dependency-graph
CHANGED
@@ -5,37 +5,4 @@ require "optparse"
|
|
5
5
|
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
|
6
6
|
require "repo_dependency_graph"
|
7
7
|
|
8
|
-
|
9
|
-
result = `git config #{thing}`.strip
|
10
|
-
result.empty? ? nil : result
|
11
|
-
end
|
12
|
-
|
13
|
-
options = {
|
14
|
-
:user => git_config("github.user")
|
15
|
-
}
|
16
|
-
OptionParser.new do |opts|
|
17
|
-
opts.banner = <<BANNER
|
18
|
-
Draw repo dependency graph from your organization
|
19
|
-
|
20
|
-
Usage:
|
21
|
-
repo-dependency-graph
|
22
|
-
|
23
|
-
Options:
|
24
|
-
BANNER
|
25
|
-
opts.on("--token TOKEN", "Use token") { |token| options[:token] = token }
|
26
|
-
opts.on("--user USER", "Use user") { |user| options[:user] = user }
|
27
|
-
opts.on("--organization ORGANIZATION", "Use organization") { |organization| options[:organization] = organization }
|
28
|
-
opts.on("--private", "Only show private repos") { options[:private] = true }
|
29
|
-
opts.on("--external", "Also include external projects in graph (can get super-messy)") { options[:external] = true }
|
30
|
-
opts.on("--map SEARCH=REPLACE", "Replace in project name to find them as internal: 'foo=bar' -> replace foo in repo names to bar") do |map|
|
31
|
-
options[:map] = map.split("=")
|
32
|
-
options[:map][0] = Regexp.new(options[:map][0])
|
33
|
-
end
|
34
|
-
opts.on("--chef", "Parse chef metadata.rb files") { options[:chef] = true }
|
35
|
-
opts.on("--select REGEX", "Only include repos with matching names") { |regex| options[:select] = Regexp.new(regex) }
|
36
|
-
opts.on("--reject REGEX", "Exclude repos with matching names") { |regex| options[:reject] = Regexp.new(regex) }
|
37
|
-
opts.on("-h", "--help", "Show this.") { puts opts; exit }
|
38
|
-
opts.on("-v", "--version", "Show Version"){ puts RepoDependencyGraph::VERSION; exit}
|
39
|
-
end.parse!
|
40
|
-
|
41
|
-
exit RepoDependencyGraph.run(options)
|
8
|
+
exit RepoDependencyGraph.run(ARGV)
|
@@ -6,13 +6,50 @@ module RepoDependencyGraph
|
|
6
6
|
class << self
|
7
7
|
MAX_HEX = 255
|
8
8
|
|
9
|
-
def run(
|
10
|
-
draw(dependencies(
|
9
|
+
def run(argv)
|
10
|
+
draw(dependencies(parse_options(argv)))
|
11
11
|
0
|
12
12
|
end
|
13
13
|
|
14
14
|
private
|
15
15
|
|
16
|
+
def parse_options(argv)
|
17
|
+
options = {
|
18
|
+
:user => git_config("github.user")
|
19
|
+
}
|
20
|
+
OptionParser.new do |opts|
|
21
|
+
opts.banner = <<-BANNER.gsub(/^ {10}/, "")
|
22
|
+
Draw repo dependency graph from your organization
|
23
|
+
|
24
|
+
Usage:
|
25
|
+
repo-dependency-graph
|
26
|
+
|
27
|
+
Options:
|
28
|
+
BANNER
|
29
|
+
opts.on("--token TOKEN", "Use token") { |token| options[:token] = token }
|
30
|
+
opts.on("--user USER", "Use user") { |user| options[:user] = user }
|
31
|
+
opts.on("--organization ORGANIZATION", "Use organization") { |organization| options[:organization] = organization }
|
32
|
+
opts.on("--private", "Only show private repos") { options[:private] = true }
|
33
|
+
opts.on("--external", "Also include external projects in graph (can get super-messy)") { options[:external] = true }
|
34
|
+
opts.on("--map SEARCH=REPLACE", "Replace in project name to find them as internal: 'foo=bar' -> replace foo in repo names to bar") do |map|
|
35
|
+
options[:map] = map.split("=")
|
36
|
+
options[:map][0] = Regexp.new(options[:map][0])
|
37
|
+
options[:map][1] = options[:map][1].to_s
|
38
|
+
end
|
39
|
+
opts.on("--chef", "Parse chef metadata.rb files") { options[:chef] = true }
|
40
|
+
opts.on("--select REGEX", "Only include repos with matching names") { |regex| options[:select] = Regexp.new(regex) }
|
41
|
+
opts.on("--reject REGEX", "Exclude repos with matching names") { |regex| options[:reject] = Regexp.new(regex) }
|
42
|
+
opts.on("-h", "--help", "Show this.") { puts opts; exit }
|
43
|
+
opts.on("-v", "--version", "Show Version"){ puts RepoDependencyGraph::VERSION; exit}
|
44
|
+
end.parse!(argv)
|
45
|
+
options
|
46
|
+
end
|
47
|
+
|
48
|
+
def git_config(thing)
|
49
|
+
result = `git config #{thing}`.strip
|
50
|
+
result.empty? ? nil : result
|
51
|
+
end
|
52
|
+
|
16
53
|
def draw(dependencies)
|
17
54
|
require 'graphviz'
|
18
55
|
|
@@ -64,8 +101,8 @@ module RepoDependencyGraph
|
|
64
101
|
content.scan(/^\s*depends ['"](.*?)['"]/).flatten
|
65
102
|
end
|
66
103
|
else
|
67
|
-
if repo.gem?
|
68
|
-
|
104
|
+
if repo.gem? && spec = load_spec(repo.gemspec_content)
|
105
|
+
spec.runtime_dependencies.map(&:name)
|
69
106
|
elsif content = repo.content("Gemfile.lock")
|
70
107
|
Bundler::LockfileParser.new(content).specs.map(&:name)
|
71
108
|
elsif content = repo.content("Gemfile")
|
@@ -77,9 +114,13 @@ module RepoDependencyGraph
|
|
77
114
|
def load_spec(content)
|
78
115
|
eval content.
|
79
116
|
gsub(/^\s*require .*$/, "").
|
80
|
-
gsub(/([a-z\d]+::)+version
|
117
|
+
gsub(/([a-z\d]+::)+version(::[a-z]+)?/i){|x| x =~ /^Gem::Version$/i ? x : '"1.2.3"' }.
|
81
118
|
gsub(/^\s*\$(:|LOAD_PATH).*/, "").
|
82
|
-
gsub(/(File|IO)\.read\(.*?\)/, '"1.2.3"')
|
119
|
+
gsub(/(File|IO)\.read\(['"]VERSION.*?\)/, '"1.2.3"').
|
120
|
+
gsub(/(File|IO)\.read\(.*?\)/, '\' VERSION = "1.2.3"\'')
|
121
|
+
rescue Exception
|
122
|
+
puts "Error when parsing content:\n#{content}\n\n#{$!}"
|
123
|
+
nil
|
83
124
|
end
|
84
125
|
|
85
126
|
def color(value, range)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: repo_dependency_graph
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Grosser
|
@@ -29,7 +29,7 @@ cert_chain:
|
|
29
29
|
y0kCSWmK6D+x/SbfS6r7Ke07MRqziJdB9GuE1+0cIRuFh8EQ+LN6HXCKM5pon/GU
|
30
30
|
ycwMXfl0
|
31
31
|
-----END CERTIFICATE-----
|
32
|
-
date: 2013-08-
|
32
|
+
date: 2013-08-23 00:00:00.000000000 Z
|
33
33
|
dependencies:
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: bundler-organization_audit
|
metadata.gz.sig
CHANGED
Binary file
|