gempendencies 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8c4b7245877eb8cdc53cec4918dd1e4939d7099f7029a1ceb757a94e08d24c7f
4
- data.tar.gz: d28f42af9eae52b049efa668192e3bf5194d714ab2773809597dd9d566b98462
3
+ metadata.gz: b70280770630c5f7ce4fc9de8e18ea6494087edc5a6fb0b7a7405f3ae7b23f43
4
+ data.tar.gz: 7cada15f60bc71bdf0f94118c4b2f7b7af4e021f9bf30adf146e5549297b9a7c
5
5
  SHA512:
6
- metadata.gz: d668128947dd0650a917e42c90be2393f42e62106aeb70d30fbce2b521b867899486473f84df8e06aed2321d8a1083d810a4db6182670c90bb8f8b9b3d7d8349
7
- data.tar.gz: 10bfdd304dc6443b06434461695d20016f1db3fafa1883c74eca232603a9d2588c67c8c5882efbc5cb1415ab21d2341a1b248901dd1c5f94dc9315fdefef6635
6
+ metadata.gz: ac18c854c678e1807925a6e37ed9c691962628edee7a7071ffba8d217a18ab9e3add3ec016e9f76c69b37e8565d63fd827e75bbeff6a467f6c879e71848e6a88
7
+ data.tar.gz: 3dea5c3a48155effd4a6ac9493142a6636293ac71300ab7e303c6574d79443932b59c5b143f322499f3cbe90070339e61fe9b72d423de98f06091107e2554455
@@ -34,23 +34,60 @@ module Gempendencies
34
34
  class GemInfo
35
35
  def initialize
36
36
  @domain_badge_labels = {}
37
- # note - be sure to double backslash all the CLI backslashes
38
- if File.exist?(".gempendencies/gem_info.txt")
39
- github_urls
40
- else
41
- "You need to generate gem_info.txt - GemInfo.new.build_gem_info_txt"
42
- end
37
+ # # note - be sure to double backslash all the CLI backslashes
38
+ # if File.exist?(".gempendencies/gem_info.txt")
39
+ # github_urls
40
+ # else
41
+ # build_gem_info_txt
42
+ # end
43
43
  end
44
44
 
45
45
  # uses bundler to build the gem_info.txt summarization of all gems used...
46
46
  def build_gem_info_txt
47
47
  # https://gist.github.com/deevis/3211023e2b14e85df6ca908dbc642a2d
48
48
  # https://gist.githubusercontent.com/deevis/3211023e2b14e85df6ca908dbc642a2d/raw/9fe1c9dfedc15b328cbe2e3f64f8198d56bb9795/generate_gem_info.sh
49
- `bin/generate_gem_info.sh`
49
+ `mkdir -p .gempendencies`
50
+ gem_names = `bundle list`.split("\n").select{|s| s.index("*") && s.index("(")}.map{|s| s.split("*").last.split("(").first.gsub(" ","")}
51
+ count = gem_names.length
52
+ puts "Fetching 'gem info' for #{count} dependencies..."
53
+ gem_info = {}
54
+ license_counts = Hash.new(0)
55
+ author_counts = Hash.new(0)
56
+ gem_names.each_with_index do |gem_name,i|
57
+ cmd = "gem info #{gem_name}"
58
+ puts "\n#{i+1}/#{count} #{cmd}"
59
+ info = `#{cmd}`
60
+ data = {}
61
+ info.split("\n").each do |line|
62
+ next unless line.index(":")
63
+ next if line.index("Installed at")
64
+ key, value = line.split(": ")
65
+ key = key.gsub('"', "").gsub(" ", "")
66
+ case key
67
+ when "Author", "Authors"
68
+ key = "Author"
69
+ value = value.split(", ")
70
+ value.each{|v| author_counts[v] += 1}
71
+ when "License", "Licenses"
72
+ key = "License"
73
+ value = value.split(", ")
74
+ value.each{|v| license_counts[v] += 1}
75
+ end
76
+ data[key] = value
77
+ end
78
+ gem_info[gem_name] = data
79
+ end
80
+ File.open(".gempendencies/gem_info.yaml", "w") do |f|
81
+ f.puts gem_info.to_yaml
82
+ end
83
+ author_counts = Hash[author_counts.sort{|a,b| b[1] <=> a[1]}]
84
+ File.open(".gempendencies/author_info.yaml", "w"){|f| f.puts author_counts.to_yaml}
85
+ license_counts = Hash[license_counts.sort{|a,b| b[1] <=> a[1]}]
86
+ File.open(".gempendencies/license_info.yaml", "w"){|f| f.puts license_counts.to_yaml}
50
87
  end
51
88
 
52
89
  def github_urls
53
- @github_urls = `grep "Homepage:" .gempendencies/gem_info.txt | grep "github" | sed 's/.*page: \\(.*\\)/\\1/g'`.split("\n").uniq
90
+ @github_urls = `grep "Homepage:" .gempendencies/gem_info.yaml | grep "github" | sed 's/.*page: \\(.*\\)/\\1/g'`.split("\n").uniq
54
91
  #puts @github_urls
55
92
  puts "Got #{@github_urls.length} github urls to process"
56
93
  @github_urls
@@ -121,35 +158,37 @@ module Gempendencies
121
158
  contents
122
159
  end
123
160
 
124
- def build
125
- if !File.exist?("gem_info.txt")
161
+ def build(load_github_metadata = false)
162
+ if !File.exist?(".gempendencies/gem_info.yaml")
126
163
  build_gem_info_txt
127
164
  end
128
- @github_urls.each do |url|
129
- cleansed = url.gsub(/http[s]*:../, '').gsub('github.com','').gsub('github.io','').gsub("/", " ").gsub(".", "").strip
130
- owner, repo = cleansed.split(" ")
131
- if owner && repo
132
- url = "https://api.github.com/repos/#{owner}/#{repo}"
133
- # puts "#{owner} - #{repo} : #{url}"
134
- directory = ".gempendencies/#{owner}/#{repo}"
135
- `mkdir -p #{directory}`
136
- file = "#{directory}/curl_result.json"
137
-
138
- if File.exist?(file)
139
- if (contents = File.read(file)).index("Moved Permanently")
140
- json = JSON.parse(contents)
141
- url = json['url']
142
- elsif !contents.index("rate limit exceeded")
143
- puts "skipping #{file}..."
144
- json = JSON.parse(contents)
145
- get_badges(json['html_url'], directory)
146
- next
165
+ if load_github_metadata
166
+ @github_urls.each do |url|
167
+ cleansed = url.gsub(/http[s]*:../, '').gsub('github.com','').gsub('github.io','').gsub("/", " ").gsub(".", "").strip
168
+ owner, repo = cleansed.split(" ")
169
+ if owner && repo
170
+ url = "https://api.github.com/repos/#{owner}/#{repo}"
171
+ # puts "#{owner} - #{repo} : #{url}"
172
+ directory = ".gempendencies/#{owner}/#{repo}"
173
+ `mkdir -p #{directory}`
174
+ file = "#{directory}/curl_result.json"
175
+
176
+ if File.exist?(file)
177
+ if (contents = File.read(file)).index("Moved Permanently")
178
+ json = JSON.parse(contents)
179
+ url = json['url']
180
+ elsif !contents.index("rate limit exceeded")
181
+ puts "skipping #{file}..."
182
+ json = JSON.parse(contents)
183
+ get_badges(json['html_url'], directory)
184
+ next
185
+ end
147
186
  end
148
- end
149
187
 
150
- contents = get_repo_json(url, file)
151
- json = JSON.parse(contents)
152
- get_badges(json['html_url'], directory)
188
+ contents = get_repo_json(url, file)
189
+ json = JSON.parse(contents)
190
+ get_badges(json['html_url'], directory)
191
+ end
153
192
  end
154
193
  end
155
194
  end # def build
@@ -1,3 +1,3 @@
1
1
  module Gempendencies
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gempendencies
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Darren Hicks
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-13 00:00:00.000000000 Z
11
+ date: 2021-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -71,7 +71,6 @@ email:
71
71
  - darren.hicks@gmail.com
72
72
  executables:
73
73
  - gempendencies
74
- - generate_gem_info.sh
75
74
  extensions: []
76
75
  extra_rdoc_files: []
77
76
  files: