gemat 0.1.5 → 0.1.6
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 +25 -10
- data/lib/gem.rb +8 -8
- data/lib/gemat/cli.rb +2 -2
- data/lib/gemat/version.rb +1 -1
- data/lib/gemat.rb +1 -1
- data/lib/out_dsl.rb +37 -6
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 422b5c9ef99e71ec0193e7748adff36049c26b88478cdc494c3f5178720f5e70
|
4
|
+
data.tar.gz: 386d6d07fb0e91e762f1846cc2395a77748351579e2fa0f277e2da5e115af049
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e79ee792b7f9e98ef3bb7d39f3865410aa3958d2e8d6a394914bcac012db41ff641df84e73c1fcc62e050dc9363a810083792a55346c24da073490d2c3f9d809
|
7
|
+
data.tar.gz: febf34bccfadc363376033573ce0fbd1bf43ffae2bcdbe83d9cfc7ccdd112976b81c869dbe3b8407d1f6d9988455296caf483e9dc8d35b95de08333c4323a15b
|
data/lib/fetcher.rb
CHANGED
@@ -11,27 +11,42 @@ module Gemat
|
|
11
11
|
|
12
12
|
def run
|
13
13
|
pb = ProgressBar.create(total: @dsl.dependencies.length)
|
14
|
-
@dsl.dependencies.each_with_index do |
|
14
|
+
@dsl.dependencies.each_with_index do |dependency, idx|
|
15
15
|
pb.increment
|
16
16
|
|
17
|
-
response =
|
18
|
-
sleep 0.2
|
17
|
+
response = fetch_rubygems(dependency)
|
19
18
|
next unless response
|
20
19
|
|
21
|
-
|
22
|
-
|
23
|
-
@gems << gem
|
20
|
+
create_gem(response, idx)
|
21
|
+
sleep 0.2
|
24
22
|
end
|
25
23
|
end
|
26
24
|
|
27
25
|
private
|
28
26
|
|
27
|
+
def create_gem(rubygems, idx)
|
28
|
+
gem = Gem.new(rubygems)
|
29
|
+
gem.github = fetch_github(gem)
|
30
|
+
gem.index = idx
|
31
|
+
@gems << gem
|
32
|
+
end
|
33
|
+
|
34
|
+
def fetch_rubygems(gem)
|
35
|
+
fetch(rubygems_api(gem.name))
|
36
|
+
end
|
37
|
+
|
38
|
+
def fetch_github(gem, uri = nil)
|
39
|
+
uri ||= gem.repo_uri.gsub(/github.com/, 'api.github.com/repos')
|
40
|
+
response = fetch(uri)
|
41
|
+
response = fetch_github(gem, response['url']) if response['message'] == 'Moved Permanently'
|
42
|
+
response
|
43
|
+
end
|
44
|
+
|
29
45
|
# rubocop:disable Metrics/MethodLength
|
30
|
-
def fetch(
|
46
|
+
def fetch(uri)
|
31
47
|
failed = []
|
32
|
-
|
33
48
|
client = HTTPClient.new
|
34
|
-
request = client.get(
|
49
|
+
request = client.get(uri)
|
35
50
|
begin
|
36
51
|
response = JSON.parse(request.body)
|
37
52
|
rescue JSON::ParserError
|
@@ -39,7 +54,7 @@ module Gemat
|
|
39
54
|
return
|
40
55
|
end
|
41
56
|
|
42
|
-
print "#{failed.join(',')}: failed fetcing
|
57
|
+
print "#{failed.join(',')}: failed fetcing info." unless failed.empty?
|
43
58
|
response
|
44
59
|
end
|
45
60
|
# rubocop:enable Metrics/MethodLength
|
data/lib/gem.rb
CHANGED
@@ -2,18 +2,18 @@
|
|
2
2
|
|
3
3
|
module Gemat
|
4
4
|
class Gem
|
5
|
-
attr_accessor :index, :
|
5
|
+
attr_accessor :index, :rubygems, :github
|
6
6
|
|
7
|
-
def initialize(
|
8
|
-
@
|
7
|
+
def initialize(rubygems)
|
8
|
+
@rubygems = rubygems
|
9
9
|
@index = 0
|
10
10
|
end
|
11
11
|
|
12
12
|
def repo_uri
|
13
|
-
match = github_uri_match([@
|
14
|
-
@
|
15
|
-
@
|
16
|
-
@
|
13
|
+
match = github_uri_match([@rubygems.dig('metadata', 'homepage_uri'),
|
14
|
+
@rubygems['homepage_uri'],
|
15
|
+
@rubygems['bug_tracker_uri'],
|
16
|
+
@rubygems['source_code_uri']])
|
17
17
|
return if match.nil?
|
18
18
|
|
19
19
|
user = match[1]
|
@@ -24,7 +24,7 @@ module Gemat
|
|
24
24
|
private
|
25
25
|
|
26
26
|
def github_uri_match(uris)
|
27
|
-
reg = %r{
|
27
|
+
reg = %r{github.com/([\w\-]+)/([\w\-]+)}
|
28
28
|
uris.each do |uri|
|
29
29
|
return reg.match(uri) if reg.match(uri)
|
30
30
|
end
|
data/lib/gemat/cli.rb
CHANGED
@@ -3,13 +3,13 @@
|
|
3
3
|
module Gemat
|
4
4
|
class Cli < Thor
|
5
5
|
desc 'csv', 'export Gemfile to CSV file'
|
6
|
-
method_options input: :string, output: :string, columns: :array
|
6
|
+
method_options input: :string, output: :string, columns: :array, all: :boolean
|
7
7
|
def csv
|
8
8
|
command(options, __method__)
|
9
9
|
end
|
10
10
|
|
11
11
|
desc 'md', 'export Gemfile to markdown'
|
12
|
-
method_options input: :string, output: :string, columns: :array
|
12
|
+
method_options input: :string, output: :string, columns: :array, all: :boolean
|
13
13
|
def md
|
14
14
|
command(options, __method__)
|
15
15
|
end
|
data/lib/gemat/version.rb
CHANGED
data/lib/gemat.rb
CHANGED
@@ -22,7 +22,7 @@ module Gemat
|
|
22
22
|
class Gemat
|
23
23
|
def self.run(options = {}, &block)
|
24
24
|
dsl = InDsl.new(options[:input])
|
25
|
-
outdsls = OutDsl.create(options[:columns])
|
25
|
+
outdsls = OutDsl.create(options[:columns], all: options[:all])
|
26
26
|
fetcher = Fetcher.new(dsl)
|
27
27
|
fetcher.run
|
28
28
|
block.call(fetcher.gems, outdsls)
|
data/lib/out_dsl.rb
CHANGED
@@ -2,17 +2,40 @@
|
|
2
2
|
|
3
3
|
module Gemat
|
4
4
|
class OutDsl
|
5
|
+
# gem
|
5
6
|
INDEX = 'index'
|
6
7
|
NAME = 'name'
|
7
8
|
REPO_URI = 'repo_uri'
|
8
9
|
GEM_URI = 'gem_uri'
|
10
|
+
|
11
|
+
# Rubygems
|
9
12
|
DOC_URI = 'documentation_uri'
|
10
13
|
LATEST_VERSION = 'version'
|
11
14
|
AUTHORS = 'authors'
|
12
|
-
DEFAULT_COLUMNS = [INDEX, NAME, REPO_URI, DOC_URI].freeze
|
13
15
|
|
14
|
-
|
16
|
+
# GitHub
|
17
|
+
DESCRIPTION = 'description'
|
18
|
+
CREATED_AT = 'created_at'
|
19
|
+
UPDATED_AT = 'updated_at'
|
20
|
+
SIZE = 'size'
|
21
|
+
STAR = 'stargazers_count'
|
22
|
+
WATCH = 'watchers_count'
|
23
|
+
FORKS = 'forks'
|
24
|
+
LANGUAGE = 'language'
|
25
|
+
ARCHIVED = 'archived'
|
26
|
+
DISABLED = 'disabled'
|
27
|
+
OPEN_ISSUES_COUNT = 'open_issues_count'
|
28
|
+
NETWORK_COUNT = 'network_count'
|
29
|
+
SUBSCRIBERS = 'subscribers_count'
|
30
|
+
|
31
|
+
DEFAULT_COLUMNS = [INDEX, NAME, REPO_URI, DOC_URI, SIZE, STAR, CREATED_AT, UPDATED_AT].freeze
|
32
|
+
|
33
|
+
RUBYGEMS_RESPONSE_SOURCES = [NAME, DOC_URI, GEM_URI, LATEST_VERSION, AUTHORS].freeze
|
34
|
+
GITHUB_RESPONSE_SOURCES = [DESCRIPTION, CREATED_AT, UPDATED_AT, SIZE, STAR, WATCH,
|
35
|
+
FORKS, LANGUAGE, ARCHIVED, DISABLED, OPEN_ISSUES_COUNT,
|
36
|
+
NETWORK_COUNT, SUBSCRIBERS].freeze
|
15
37
|
GEM_SOURCES = [INDEX, REPO_URI].freeze
|
38
|
+
ALL_SOURCES = [].concat(GEM_SOURCES, RUBYGEMS_RESPONSE_SOURCES, GITHUB_RESPONSE_SOURCES).freeze
|
16
39
|
|
17
40
|
attr_accessor :column_name
|
18
41
|
|
@@ -20,9 +43,11 @@ module Gemat
|
|
20
43
|
columns.map { |column| new(column) }
|
21
44
|
end
|
22
45
|
|
23
|
-
def self.create(columns)
|
46
|
+
def self.create(columns, all: nil)
|
24
47
|
if columns
|
25
48
|
new_by_array(columns)
|
49
|
+
elsif all
|
50
|
+
new_by_array(ALL_SOURCES)
|
26
51
|
else
|
27
52
|
new_by_array(DEFAULT_COLUMNS)
|
28
53
|
end
|
@@ -41,14 +66,16 @@ module Gemat
|
|
41
66
|
# rubocop:disable Metrics/MethodLength
|
42
67
|
def set_lambda
|
43
68
|
case @column_name
|
44
|
-
when *
|
69
|
+
when *RUBYGEMS_RESPONSE_SOURCES
|
45
70
|
@lambda = rubygems_response(@column_name)
|
71
|
+
when *GITHUB_RESPONSE_SOURCES
|
72
|
+
@lambda = github_response(@column_name)
|
46
73
|
when *GEM_SOURCES
|
47
74
|
@lambda = gem_method(@column_name)
|
48
75
|
else
|
49
76
|
msg = <<-ERROR.gsub(/^\s+/, '')
|
50
77
|
Contain invalid column name `#{@column_name}`!
|
51
|
-
valid columns hint: [#{
|
78
|
+
valid columns hint: [#{ALL_SOURCES}]
|
52
79
|
ERROR
|
53
80
|
raise StandardError, msg
|
54
81
|
end
|
@@ -56,7 +83,11 @@ module Gemat
|
|
56
83
|
# rubocop:enable Metrics/MethodLength
|
57
84
|
|
58
85
|
def rubygems_response(column)
|
59
|
-
->(gem) { gem.
|
86
|
+
->(gem) { gem.rubygems[column] }
|
87
|
+
end
|
88
|
+
|
89
|
+
def github_response(column)
|
90
|
+
->(gem) { gem.github[column] }
|
60
91
|
end
|
61
92
|
|
62
93
|
def gem_method(column)
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
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.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Kijima Daigo
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
@@ -52,7 +52,7 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
-
description:
|
55
|
+
description: Gemat is a Ruby gem for curating and exporing Gemfile to several formats!
|
56
56
|
email:
|
57
57
|
- norimaking777@gmail.com
|
58
58
|
executables:
|
@@ -96,5 +96,5 @@ requirements: []
|
|
96
96
|
rubygems_version: 3.1.4
|
97
97
|
signing_key:
|
98
98
|
specification_version: 4
|
99
|
-
summary:
|
99
|
+
summary: Gemat is a Ruby gem for curating and exporing Gemfile to several formats!
|
100
100
|
test_files: []
|