gem_compat_scan 0.2.0 → 0.2.1
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/CHANGELOG.md +7 -1
- data/gem_compat_scan.gemspec +4 -3
- data/lib/gem_compat_scan/checker.rb +23 -2
- data/lib/gem_compat_scan/pdf_generator.rb +23 -10
- data/lib/gem_compat_scan/version.rb +1 -1
- data/lib/gem_compat_scan.rb +2 -0
- metadata +22 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e10068f198522796f5fa20d9fc1d16359a2a2d58bb6cf7651105296694ade6f
|
4
|
+
data.tar.gz: a2b24629570ae71b7ab32091d55e9a1e62342c753a908af79cd467fade735940
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 115b04730027c35752567beaf65f079302de63917a78d1d3583541b644c4cfcedbb93c8334591bbec18581463db63ecff334a18a60758b75537338657d6cd747
|
7
|
+
data.tar.gz: 6599da778ffc3f7e39fb4a8586bf1300ef30e6ec123041cde90fe6041e1463555d44d016a496c9858026a39d8a7e76f3b33bc74de8bb9a9e1fc3900d4e0a41bd
|
data/CHANGELOG.md
CHANGED
@@ -4,4 +4,10 @@
|
|
4
4
|
### Added
|
5
5
|
- Initial release of GemCompatScan.
|
6
6
|
- Scans Gemfile for gem versions and checks for updates.
|
7
|
-
- Generates PDF reports with gem update information.
|
7
|
+
- Generates PDF reports with gem update information.
|
8
|
+
|
9
|
+
## [0.2.1] - 2023-08-08
|
10
|
+
### Added
|
11
|
+
- Github URL for each gem in PDF report
|
12
|
+
### Changed
|
13
|
+
- Formattted Gems information in PDF in table format
|
data/gem_compat_scan.gemspec
CHANGED
@@ -34,9 +34,10 @@ Gem::Specification.new do |spec|
|
|
34
34
|
spec.require_paths = ["lib"]
|
35
35
|
|
36
36
|
# Add runtime dependencies
|
37
|
-
spec.add_runtime_dependency 'bundler'
|
38
|
-
spec.add_runtime_dependency 'prawn'
|
39
|
-
spec.add_runtime_dependency '
|
37
|
+
spec.add_runtime_dependency 'bundler', '>= 2.4'
|
38
|
+
spec.add_runtime_dependency 'prawn', '>= 2.4'
|
39
|
+
spec.add_runtime_dependency 'prawn-table', '>= 0.2.2'
|
40
|
+
spec.add_runtime_dependency 'gems', '>= 1.2.0'
|
40
41
|
|
41
42
|
# Optional: Add development dependencies (for testing and development)
|
42
43
|
spec.add_development_dependency 'rspec'
|
@@ -12,10 +12,13 @@ module GemCompatScan
|
|
12
12
|
latest_version = fetch_latest_version(gem_name)
|
13
13
|
|
14
14
|
if latest_version && latest_version > current_version
|
15
|
+
github_url = fetch_github_url(gem_name)
|
16
|
+
|
15
17
|
updates << {
|
16
18
|
gem: gem_name,
|
17
19
|
current_version: current_version,
|
18
|
-
latest_version: latest_version
|
20
|
+
latest_version: latest_version,
|
21
|
+
github_url: github_url
|
19
22
|
}
|
20
23
|
end
|
21
24
|
end
|
@@ -28,5 +31,23 @@ module GemCompatScan
|
|
28
31
|
rescue Gems::NotFound
|
29
32
|
nil # Return nil if gem is not found
|
30
33
|
end
|
34
|
+
|
35
|
+
def self.fetch_github_url(gem_name)
|
36
|
+
gem_info = Gems.info(gem_name)
|
37
|
+
repo_url = gem_info['source_code_uri']
|
38
|
+
extract_github_url(repo_url)
|
39
|
+
rescue Gems::NotFound
|
40
|
+
nil # Return nil if gem is not found
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.extract_github_url(repo_url)
|
44
|
+
if repo_url =~ %r{github\.com/([^/]+)/([^/]+)}
|
45
|
+
repo_owner = Regexp.last_match(1)
|
46
|
+
repo_name = Regexp.last_match(2)
|
47
|
+
"https://github.com/#{repo_owner}/#{repo_name}"
|
48
|
+
else
|
49
|
+
nil # Return nil if the repository URL format is not recognized
|
50
|
+
end
|
51
|
+
end
|
31
52
|
end
|
32
|
-
end
|
53
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'prawn'
|
2
|
+
require 'prawn/table'
|
2
3
|
|
3
4
|
module GemCompatScan
|
4
5
|
class PDFGenerator
|
@@ -7,20 +8,32 @@ module GemCompatScan
|
|
7
8
|
pdf.text 'Gem Updates Report', size: 18, style: :bold, align: :center
|
8
9
|
pdf.move_down 20
|
9
10
|
|
10
|
-
|
11
|
-
pdf.text "Gem: #{update[:gem]}", size: 14, style: :bold
|
12
|
-
pdf.text "Current Version: #{update[:current_version]}"
|
13
|
-
pdf.text "Latest Version: #{update[:latest_version]}"
|
11
|
+
table_data = [['Gem', 'Current Version', 'Latest Version', 'Github URL']]
|
14
12
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
13
|
+
updates.each do |update|
|
14
|
+
table_data << [
|
15
|
+
update[:gem],
|
16
|
+
update[:current_version],
|
17
|
+
update[:latest_version],
|
18
|
+
github_link(update[:github_url], pdf)
|
19
|
+
]
|
20
|
+
end
|
20
21
|
|
21
|
-
|
22
|
+
pdf.table(table_data, header: true, width: pdf.bounds.width) do
|
23
|
+
cells.borders = []
|
24
|
+
row(0).font_style = :bold
|
22
25
|
end
|
23
26
|
end
|
24
27
|
end
|
28
|
+
|
29
|
+
def self.github_link(github_url, pdf)
|
30
|
+
if github_url
|
31
|
+
pdf.make_cell(
|
32
|
+
:content => "<link href='#{github_url}'>#{github_url}</link>",
|
33
|
+
:inline_format => true)
|
34
|
+
else
|
35
|
+
''
|
36
|
+
end
|
37
|
+
end
|
25
38
|
end
|
26
39
|
end
|
data/lib/gem_compat_scan.rb
CHANGED
@@ -5,10 +5,12 @@ require 'gem_compat_scan/pdf_generator'
|
|
5
5
|
|
6
6
|
module GemCompatScan
|
7
7
|
def self.run
|
8
|
+
print 'Scanning for gem updates'
|
8
9
|
# Your existing code to scan gem versions and gather updates
|
9
10
|
updates = Checker.check_updates
|
10
11
|
|
11
12
|
# Generate the PDF report using Prawn
|
12
13
|
PDFGenerator.generate_report(updates)
|
14
|
+
puts "\nFinished! Generated #{updates.size} PDF reports."
|
13
15
|
end
|
14
16
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gem_compat_scan
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nidhi Sarvaiya
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-08-
|
11
|
+
date: 2023-08-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,42 +16,56 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.4'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '2.4'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: prawn
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '2.4'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '2.4'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: prawn-table
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.2.2
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.2.2
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: gems
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
59
|
- - ">="
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
61
|
+
version: 1.2.0
|
48
62
|
type: :runtime
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
66
|
- - ">="
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
68
|
+
version: 1.2.0
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: rspec
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|