gemat 0.1.4 → 0.1.5
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
- data/lib/fetcher.rb +8 -3
- data/lib/gem.rb +6 -10
- data/lib/gemat/version.rb +1 -1
- data/lib/out_dsl.rb +25 -16
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8f982912f3b03995a2abde75b03a47ec9102608968aac18984961dcc0eeec294
|
4
|
+
data.tar.gz: b424b233d91a30b3343a72423899f03bdd646bea95ab04b3e5db35877952188f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cfae4ee42d415f01228e91e7579d4f3426af3cc66c856355bbc543097f43f11f03112fb231995e1ae603a2f9fbd151db28a5654592602c4e83a68ac8ebc72596
|
7
|
+
data.tar.gz: bd65e8888a6ebb972621da6ad8eb2fa5e2f66658621908a950e7463ad60282f8dc1de100ee30d4966c040f741b5b8d5c9aec5783f756d2c0d7feddd4d22aab9c
|
data/lib/fetcher.rb
CHANGED
@@ -12,10 +12,10 @@ module Gemat
|
|
12
12
|
def run
|
13
13
|
pb = ProgressBar.create(total: @dsl.dependencies.length)
|
14
14
|
@dsl.dependencies.each_with_index do |gem, idx|
|
15
|
-
sleep 0.1
|
16
15
|
pb.increment
|
17
16
|
|
18
17
|
response = fetch(gem)
|
18
|
+
sleep 0.2
|
19
19
|
next unless response
|
20
20
|
|
21
21
|
gem = Gem.new(response)
|
@@ -26,18 +26,23 @@ module Gemat
|
|
26
26
|
|
27
27
|
private
|
28
28
|
|
29
|
+
# rubocop:disable Metrics/MethodLength
|
29
30
|
def fetch(gem)
|
31
|
+
failed = []
|
32
|
+
|
30
33
|
client = HTTPClient.new
|
31
34
|
request = client.get(rubygems_api(gem.name))
|
32
35
|
begin
|
33
36
|
response = JSON.parse(request.body)
|
34
37
|
rescue JSON::ParserError
|
35
|
-
|
38
|
+
failed << gem.name
|
36
39
|
return
|
37
40
|
end
|
38
|
-
|
41
|
+
|
42
|
+
print "#{failed.join(',')}: failed fetcing gem info." unless failed.empty?
|
39
43
|
response
|
40
44
|
end
|
45
|
+
# rubocop:enable Metrics/MethodLength
|
41
46
|
|
42
47
|
def rubygems_api(name)
|
43
48
|
"https://rubygems.org/api/v1/gems/#{name}.json"
|
data/lib/gem.rb
CHANGED
@@ -2,19 +2,15 @@
|
|
2
2
|
|
3
3
|
module Gemat
|
4
4
|
class Gem
|
5
|
-
attr_accessor :index
|
5
|
+
attr_accessor :index, :response
|
6
6
|
|
7
7
|
def initialize(response)
|
8
8
|
@response = response
|
9
9
|
@index = 0
|
10
10
|
end
|
11
11
|
|
12
|
-
def
|
13
|
-
@response
|
14
|
-
end
|
15
|
-
|
16
|
-
def repo_url
|
17
|
-
match = github_url_match([@response.dig('metadata', 'homepage_uri'),
|
12
|
+
def repo_uri
|
13
|
+
match = github_uri_match([@response.dig('metadata', 'homepage_uri'),
|
18
14
|
@response['homepage_uri'],
|
19
15
|
@response['bug_tracker_uri'],
|
20
16
|
@response['source_code_uri']])
|
@@ -27,10 +23,10 @@ module Gemat
|
|
27
23
|
|
28
24
|
private
|
29
25
|
|
30
|
-
def
|
26
|
+
def github_uri_match(uris)
|
31
27
|
reg = %r{https://github.com/([\w\-]+)/([\w\-]+)}
|
32
|
-
|
33
|
-
return reg.match(
|
28
|
+
uris.each do |uri|
|
29
|
+
return reg.match(uri) if reg.match(uri)
|
34
30
|
end
|
35
31
|
end
|
36
32
|
end
|
data/lib/gemat/version.rb
CHANGED
data/lib/out_dsl.rb
CHANGED
@@ -4,8 +4,15 @@ module Gemat
|
|
4
4
|
class OutDsl
|
5
5
|
INDEX = 'index'
|
6
6
|
NAME = 'name'
|
7
|
-
|
8
|
-
|
7
|
+
REPO_URI = 'repo_uri'
|
8
|
+
GEM_URI = 'gem_uri'
|
9
|
+
DOC_URI = 'documentation_uri'
|
10
|
+
LATEST_VERSION = 'version'
|
11
|
+
AUTHORS = 'authors'
|
12
|
+
DEFAULT_COLUMNS = [INDEX, NAME, REPO_URI, DOC_URI].freeze
|
13
|
+
|
14
|
+
RESPONSE_SOURCES = [NAME, DOC_URI, GEM_URI, LATEST_VERSION, AUTHORS].freeze
|
15
|
+
GEM_SOURCES = [INDEX, REPO_URI].freeze
|
9
16
|
|
10
17
|
attr_accessor :column_name
|
11
18
|
|
@@ -31,27 +38,29 @@ module Gemat
|
|
31
38
|
@lambda.call(gem)
|
32
39
|
end
|
33
40
|
|
41
|
+
# rubocop:disable Metrics/MethodLength
|
34
42
|
def set_lambda
|
35
43
|
case @column_name
|
36
|
-
when
|
37
|
-
@lambda =
|
38
|
-
when
|
39
|
-
@lambda =
|
40
|
-
|
41
|
-
|
44
|
+
when *RESPONSE_SOURCES
|
45
|
+
@lambda = rubygems_response(@column_name)
|
46
|
+
when *GEM_SOURCES
|
47
|
+
@lambda = gem_method(@column_name)
|
48
|
+
else
|
49
|
+
msg = <<-ERROR.gsub(/^\s+/, '')
|
50
|
+
Contain invalid column name `#{@column_name}`!
|
51
|
+
valid columns hint: [#{GEM_SOURCES.join(', ')}, #{RESPONSE_SOURCES.join(', ')}]
|
52
|
+
ERROR
|
53
|
+
raise StandardError, msg
|
42
54
|
end
|
43
55
|
end
|
56
|
+
# rubocop:enable Metrics/MethodLength
|
44
57
|
|
45
|
-
def
|
46
|
-
->(gem) { gem.
|
47
|
-
end
|
48
|
-
|
49
|
-
def repo_url
|
50
|
-
->(gem) { gem.repo_url }
|
58
|
+
def rubygems_response(column)
|
59
|
+
->(gem) { gem.response[column] }
|
51
60
|
end
|
52
61
|
|
53
|
-
def
|
54
|
-
->(gem) { gem.
|
62
|
+
def gem_method(column)
|
63
|
+
->(gem) { gem.send(column) }
|
55
64
|
end
|
56
65
|
end
|
57
66
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gemat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kijimaD
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-11-
|
11
|
+
date: 2021-11-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httpclient
|