gempendencies 0.1.1 → 0.1.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: 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: