gem_compat_scan 0.2.0 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a99f894780a03fa86832cb5ca728cccac44a186a2cfde00bfd5b2de2b38c53cf
4
- data.tar.gz: 0b32bdc24458e9b3bb16c7b5d475984f3290fb4f712c6bd750ec58337316c4c9
3
+ metadata.gz: 343c0cc87dd8311f478d1d09085f0b4981412fc05e1d7aa9d1b05884224e9024
4
+ data.tar.gz: f4e2d329a8e1fce95c884de162eedbbf3723ac8f36d1e7da9b801da6f71ff3a3
5
5
  SHA512:
6
- metadata.gz: f48283c64f671cb913042595be276496e523168ed68fd30cd063f64b78a2ed46ac224640b5a98328847b8480aadf819861669fd03743b90d778bdf4134b0b15e
7
- data.tar.gz: d6d4d383cb53228762e555af12d2a45dcee3139ba83596f622c44acd42be4bfb216e6994187a3c61390f537bf6f75b9ed646734cf178a90cb999d7e14d6cef29
6
+ metadata.gz: 3f88319acd92a0dafc59de95f69a90fa5c41551882739e7204106b092b5f56a4cf1c5b328a87affcb1adc46cf754198c7fe3f3b029fafc6f7a4380a9a73d2710
7
+ data.tar.gz: '029a276a7a2f01f17cf359a58ec79c5d0cee07c08ad0449f9fa4255024e9f60ec77c7881b4525fb3b459468c686e4b627a59879eb2fcb83d679a2ad3270e67a8'
data/CHANGELOG.md CHANGED
@@ -4,4 +4,14 @@
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
14
+
15
+ ## [0.2.2] - 2023-08-08
16
+ ### FIXED
17
+ - Gem compatibilty issue
@@ -34,12 +34,13 @@ 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 'gems'
37
+ spec.add_runtime_dependency 'bundler', '~> 1.15.0'
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
- spec.add_development_dependency 'rspec'
43
+ spec.add_development_dependency 'rspec', "~> 3.12.0"
43
44
 
44
45
  # Uncomment to register a new dependency of your gem
45
46
  # spec.add_dependency "example-gem", "~> 1.0"
@@ -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
- updates.each do |update|
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
- if update[:new_info]
16
- pdf.move_down 10
17
- pdf.text 'New Information:', style: :bold
18
- pdf.text update[:new_info]
19
- end
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
- pdf.move_down 20
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GemCompatScan
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.2"
5
5
  end
@@ -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,71 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gem_compat_scan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.2
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-04 00:00:00.000000000 Z
11
+ date: 2023-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 1.15.0
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: '0'
26
+ version: 1.15.0
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: '0'
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: '0'
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: '0'
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: '0'
68
+ version: 1.2.0
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rspec
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - ">="
73
+ - - "~>"
60
74
  - !ruby/object:Gem::Version
61
- version: '0'
75
+ version: 3.12.0
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - ">="
80
+ - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: '0'
82
+ version: 3.12.0
69
83
  description: GemCompatScan helps Ruby on Rails developers keep their project's dependencies
70
84
  up-to-date and ensure compatibility with their application.
71
85
  email: