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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d8aaec3acaf9aba89e198cf7077ea42527378af2ed240a2afd9569a463ffb11c
4
- data.tar.gz: b1848af9dd9395a6a1e8b10615758da31fbbb8273fe08780c00d55393445cc6f
3
+ metadata.gz: 8f982912f3b03995a2abde75b03a47ec9102608968aac18984961dcc0eeec294
4
+ data.tar.gz: b424b233d91a30b3343a72423899f03bdd646bea95ab04b3e5db35877952188f
5
5
  SHA512:
6
- metadata.gz: c1ba3ce74b81c32c70ced331101bc9345eebd57b1481f8f28743c021076499cc136d3dae6b1aeb5fd79355f860a18b6ffaa5bfa6b065fb5a6fd59295c1fcd1f4
7
- data.tar.gz: 7d780cfafb27dafd2becf3043337f4779aac46a9d17364179b9f15c9e20d47f505ed7067a05a7171d085c23a2144b6eb824586641ba280c90a048b02fe99f8d5
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
- print "\n#{gem.name} is not found on Rubygems..."
38
+ failed << gem.name
36
39
  return
37
40
  end
38
- # puts JSON.pretty_generate(response)
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 name
13
- @response['name']
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 github_url_match(urls)
26
+ def github_uri_match(uris)
31
27
  reg = %r{https://github.com/([\w\-]+)/([\w\-]+)}
32
- urls.each do |url|
33
- return reg.match(url) if reg.match(url)
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Gemat
4
- VERSION = '0.1.4'
4
+ VERSION = '0.1.5'
5
5
  end
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
- REPO_URL = 'repo_url'
8
- DEFAULT_COLUMNS = [INDEX, NAME, REPO_URL].freeze
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 NAME
37
- @lambda = name
38
- when REPO_URL
39
- @lambda = repo_url
40
- when INDEX
41
- @lambda = index
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 name
46
- ->(gem) { gem.name }
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 index
54
- ->(gem) { gem.index }
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
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-28 00:00:00.000000000 Z
11
+ date: 2021-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpclient