gemat 0.1.0
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 +7 -0
- data/exe/gemat +5 -0
- data/lib/csv_formatter.rb +19 -0
- data/lib/dsl.rb +27 -0
- data/lib/gemat/cli.rb +15 -0
- data/lib/gemat/version.rb +5 -0
- data/lib/gemat.rb +14 -0
- data/lib/get_url.rb +48 -0
- data/lib/main.rb +17 -0
- metadata +69 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6505a5cf71ca84a7cef9f7584f1acc48af9199c184afe8bb9ba3cc84b4ff13e0
|
4
|
+
data.tar.gz: 9a35db86cdf9275fac5091674d360337f8dc16a2284c0decbecda003f7803d00
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c1d6d1be9948bf32493dee022278db5cbabf47b23c59bd488d019cdb8b986ef62ea44959d6442714fd76bd4a1c5e99d63462c78baf1ad7459fb1f7b9e912e168
|
7
|
+
data.tar.gz: 37c66b7bc88beb96b05dc0962afcee34197f01bed68d98a0fe22954b27ccaf37f87988976d975ec19587ec5b32ce512fcd5c576c6f424add40a3262241264ac9
|
data/exe/gemat
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'csv'
|
4
|
+
|
5
|
+
module Gemat
|
6
|
+
class CsvFormatter
|
7
|
+
def initialize(url)
|
8
|
+
@url = url
|
9
|
+
end
|
10
|
+
|
11
|
+
def to_csv
|
12
|
+
CSV.open('test.csv', 'w') do |csv|
|
13
|
+
@url.urls.each do |k, v|
|
14
|
+
csv << [k, v]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/dsl.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'bundler'
|
4
|
+
|
5
|
+
module Gemat
|
6
|
+
class Dsl
|
7
|
+
attr_accessor :dependencies, :sources, :git_sources, :groups, :gemspecs
|
8
|
+
|
9
|
+
# rubocop:disable Metrics/MethodLength
|
10
|
+
def initialize(gemfile = nil)
|
11
|
+
gemfile ||= Bundler.default_gemfile.to_s
|
12
|
+
dsl = Bundler::Dsl.new
|
13
|
+
dsl.eval_gemfile(gemfile)
|
14
|
+
|
15
|
+
class << dsl
|
16
|
+
attr_accessor :sources, :git_sources, :groups, :gemspecs
|
17
|
+
end
|
18
|
+
|
19
|
+
@dependencies = dsl.dependencies
|
20
|
+
@sources = dsl.sources
|
21
|
+
@git_sources = dsl.git_sources
|
22
|
+
@groups = dsl.groups
|
23
|
+
@gemspecs = dsl.gemspecs
|
24
|
+
end
|
25
|
+
# rubocop:enable Metrics/MethodLength
|
26
|
+
end
|
27
|
+
end
|
data/lib/gemat/cli.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'thor'
|
4
|
+
|
5
|
+
module Gemat
|
6
|
+
class Cli < Thor
|
7
|
+
desc 'export Gemfile to CSV', 'test'
|
8
|
+
def csv
|
9
|
+
dsl = Gemat::Dsl.new
|
10
|
+
url = Gemat::GetUrl.new(dsl)
|
11
|
+
url.run
|
12
|
+
Gemat::CsvFormatter.new(url).to_csv
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/gemat.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'httpclient'
|
4
|
+
require 'json'
|
5
|
+
|
6
|
+
require_relative 'csv_formatter'
|
7
|
+
require_relative 'dsl'
|
8
|
+
require_relative 'gemat/version'
|
9
|
+
require_relative 'gemat/cli'
|
10
|
+
require_relative 'get_url'
|
11
|
+
|
12
|
+
module Gemat
|
13
|
+
class Error < StandardError; end
|
14
|
+
end
|
data/lib/get_url.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Gemat
|
4
|
+
class GetUrl
|
5
|
+
attr_accessor :urls
|
6
|
+
|
7
|
+
def initialize(dsl)
|
8
|
+
@dsl = dsl
|
9
|
+
@urls = {}
|
10
|
+
end
|
11
|
+
|
12
|
+
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
13
|
+
def run
|
14
|
+
@dsl.dependencies.each do |gem|
|
15
|
+
# break unless gem == @dsl.dependencies.first
|
16
|
+
|
17
|
+
sleep 0.1
|
18
|
+
p "start #{gem.name}..."
|
19
|
+
|
20
|
+
client = HTTPClient.new
|
21
|
+
request = client.get(rubygems_api(gem))
|
22
|
+
response = JSON.parse(request.body)
|
23
|
+
# puts JSON.pretty_generate(response)
|
24
|
+
|
25
|
+
github_gem = github_url(response.dig('metadata', 'homepage_uri')) ||
|
26
|
+
github_url(response['homepage_uri']) ||
|
27
|
+
github_url(response['bug_tracker_uri']) ||
|
28
|
+
github_url(response['source_code_uri'])
|
29
|
+
next if github_gem.nil?
|
30
|
+
|
31
|
+
user = github_gem[1]
|
32
|
+
repo = github_gem[2]
|
33
|
+
gh_url = "https://github.com/#{user}/#{repo}"
|
34
|
+
@urls[gem.name] = gh_url
|
35
|
+
end
|
36
|
+
end
|
37
|
+
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
38
|
+
|
39
|
+
def github_url(url)
|
40
|
+
reg = %r{https://github.com/([\w\-]+)/([\w\-]+)}
|
41
|
+
reg.match(url)
|
42
|
+
end
|
43
|
+
|
44
|
+
def rubygems_api(gem)
|
45
|
+
"https://rubygems.org/api/v1/gems/#{gem.name}.json"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/lib/main.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'httpclient'
|
4
|
+
require 'json'
|
5
|
+
|
6
|
+
require_relative 'dsl'
|
7
|
+
require_relative 'get_url'
|
8
|
+
require_relative 'csv_formatter'
|
9
|
+
|
10
|
+
def main
|
11
|
+
dsl = Gemat::Dsl.new
|
12
|
+
url = Gemat::GetUrl.new(dsl)
|
13
|
+
url.run
|
14
|
+
Gemat::CsvFormatter.new(url).to_csv
|
15
|
+
end
|
16
|
+
|
17
|
+
main
|
metadata
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gemat
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- kijimaD
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2021-11-25 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: thor
|
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
|
+
description: Export Gemfile several formats. CSV, Markdown etc.
|
28
|
+
email:
|
29
|
+
- norimaking777@gmail.com
|
30
|
+
executables:
|
31
|
+
- gemat
|
32
|
+
extensions: []
|
33
|
+
extra_rdoc_files: []
|
34
|
+
files:
|
35
|
+
- exe/gemat
|
36
|
+
- lib/csv_formatter.rb
|
37
|
+
- lib/dsl.rb
|
38
|
+
- lib/gemat.rb
|
39
|
+
- lib/gemat/cli.rb
|
40
|
+
- lib/gemat/version.rb
|
41
|
+
- lib/get_url.rb
|
42
|
+
- lib/main.rb
|
43
|
+
homepage: https://github.com/kijimaD/gemat
|
44
|
+
licenses:
|
45
|
+
- GPL3
|
46
|
+
metadata:
|
47
|
+
homepage_uri: https://github.com/kijimaD/gemat
|
48
|
+
source_code_uri: https://github.com/kijimaD/gemat
|
49
|
+
changelog_uri: https://github.com/kijimaD/gemat
|
50
|
+
post_install_message:
|
51
|
+
rdoc_options: []
|
52
|
+
require_paths:
|
53
|
+
- lib
|
54
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: 2.5.0
|
59
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
64
|
+
requirements: []
|
65
|
+
rubygems_version: 3.1.4
|
66
|
+
signing_key:
|
67
|
+
specification_version: 4
|
68
|
+
summary: Export Gemfile several formats.
|
69
|
+
test_files: []
|