gemat 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: 8a0cf4ae9ce848baece6d6ae5468172dae15a3d9ce0f5c1f86f5857683bdd997
4
- data.tar.gz: 0f4530883e71e3d11a8e87c0209dc205f71bcd87b34e7e56577c8fc5327b5da1
3
+ metadata.gz: 39618b03f87eed4eb3200c82212940c320262f6518932a5df96973f10f204bb2
4
+ data.tar.gz: c14fe77e39bec43590dc0c00c8e444e1ff7f6fc97e3d1cb0c1fe009955c75533
5
5
  SHA512:
6
- metadata.gz: b6bd9726fed2ebd7eedb7a2abe9bb24e24ef2dd2da6d5caf4e097e9099f44becf881c283a075088be4d46f3ad414cd2d7eb46f83bd5794c1f8f0f7fa6175b7ea
7
- data.tar.gz: dc337262705b8c00c0ec80055332a81650a35057eba95cf1a0359d526785dcd803fdf3311e1284d3f5272ae8990fd9d213904e870cabc1e94ee02f1c132e671c
6
+ metadata.gz: 379fbabf51a3abf620a46628501ec81596fcfcc93526a5b31657e4a0ffcfcfac468a27ff8e100b340f2781485b88fae8ee7030374985b82d7c2f1545100b1fdb
7
+ data.tar.gz: 83b49c68fead8652d7492380fa3ad56b65ea93b8c64de8e9d575a187f7454c5456acfd404c5c409b6ba1fa873088a212365a82208d1581d836620e03e68de1b8
data/lib/csv_formatter.rb CHANGED
@@ -4,25 +4,31 @@ require 'csv'
4
4
 
5
5
  module Gemat
6
6
  class CsvFormatter
7
- DEFAULT_OUTPUT = 'gemat'
8
-
9
- def initialize(url, output = DEFAULT_OUTPUT)
7
+ def initialize(url, output = nil)
10
8
  @url = url
11
9
  @output = output
10
+ @rows = []
11
+ gen_array
12
12
  end
13
13
 
14
14
  def to_csv
15
- CSV.open(output_file, 'w') do |csv|
16
- csv << ['gem', 'Repo URL']
17
- @url.urls.each do |k, v|
18
- csv << [k, v]
15
+ if @output
16
+ CSV.open(@output, 'w') do |csv|
17
+ @rows.each { |row| csv << row }
19
18
  end
19
+ else
20
+ print "\n\n"
21
+ @rows.each { |row| print row.to_csv }
20
22
  end
21
- print "\n\nexport to #{output_file} !"
22
23
  end
23
24
 
24
- def output_file
25
- "#{@output}.csv"
25
+ private
26
+
27
+ def gen_array
28
+ @rows << ['gem', 'Repo URL']
29
+ @url.urls.each do |k, v|
30
+ @rows << [k, v]
31
+ end
26
32
  end
27
33
  end
28
34
  end
data/lib/gemat/cli.rb CHANGED
@@ -6,18 +6,12 @@ module Gemat
6
6
  class Cli < Thor
7
7
  desc 'csv', 'export Gemfile to CSV file'
8
8
  def csv
9
- dsl = Gemat::Dsl.new
10
- url = Gemat::GetUrl.new(dsl)
11
- url.run
12
- Gemat::CsvFormatter.new(url).to_csv
9
+ Gemat.run { |url| CsvFormatter.new(url).to_csv }
13
10
  end
14
11
 
15
12
  desc 'md', 'export Gemfile to markdown'
16
13
  def md
17
- dsl = Gemat::Dsl.new
18
- url = Gemat::GetUrl.new(dsl)
19
- url.run
20
- Gemat::MdFormatter.new(url).to_md
14
+ Gemat.run { |url| MdFormatter.new(url).to_md }
21
15
  end
22
16
  end
23
17
  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.1'
4
+ VERSION = '0.1.2'
5
5
  end
data/lib/gemat.rb CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'httpclient'
4
4
  require 'json'
5
+ require 'ruby-progressbar'
5
6
 
6
7
  require_relative 'csv_formatter'
7
8
  require_relative 'md_formatter'
@@ -12,4 +13,13 @@ require_relative 'get_url'
12
13
 
13
14
  module Gemat
14
15
  class Error < StandardError; end
16
+
17
+ class Gemat
18
+ def self.run(&block)
19
+ dsl = Dsl.new
20
+ url = GetUrl.new(dsl)
21
+ url.run
22
+ block.call(url)
23
+ end
24
+ end
15
25
  end
data/lib/get_url.rb CHANGED
@@ -9,11 +9,9 @@ module Gemat
9
9
 
10
10
  # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
11
11
  def run
12
+ pb = ProgressBar.create(total: @dsl.dependencies.length)
12
13
  @dsl.dependencies.each do |gem|
13
- # break unless gem == @dsl.dependencies.first
14
-
15
14
  sleep 0.1
16
- print "#{gem.name}..."
17
15
 
18
16
  client = HTTPClient.new
19
17
  request = client.get(rubygems_api(gem))
@@ -25,22 +23,23 @@ module Gemat
25
23
  end
26
24
  # puts JSON.pretty_generate(response)
27
25
 
28
- github_gem = github_url(response.dig('metadata', 'homepage_uri')) ||
29
- github_url(response['homepage_uri']) ||
30
- github_url(response['bug_tracker_uri']) ||
31
- github_url(response['source_code_uri'])
32
- next if github_gem.nil?
26
+ match = github_url_match(response.dig('metadata', 'homepage_uri')) ||
27
+ github_url_match(response['homepage_uri']) ||
28
+ github_url_match(response['bug_tracker_uri']) ||
29
+ github_url_match(response['source_code_uri'])
30
+ next if match.nil?
33
31
 
34
- user = github_gem[1]
35
- repo = github_gem[2]
32
+ user = match[1]
33
+ repo = match[2]
36
34
  gh_url = "https://github.com/#{user}/#{repo}"
37
35
  @urls[gem.name] = gh_url
38
- print "done\n"
36
+
37
+ pb.increment
39
38
  end
40
39
  end
41
40
  # rubocop:enable Metrics/MethodLength, Metrics/AbcSize
42
41
 
43
- def github_url(url)
42
+ def github_url_match(url)
44
43
  reg = %r{https://github.com/([\w\-]+)/([\w\-]+)}
45
44
  reg.match(url)
46
45
  end
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gemat
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
  - kijimaD
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-11-25 00:00:00.000000000 Z
11
+ date: 2021-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: httpclient
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: ruby-progressbar
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: thor
15
43
  requirement: !ruby/object:Gem::Requirement