gem_compat_scan 0.1.0 → 0.2.1

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: c982e6879fd82ccea03d1a32defcaf1b72a54d7d7fd4597c72df3c6324750ae7
4
- data.tar.gz: 716aac40d123c02f7105eaffa17b13f360bbdf64bf3e28f839a75b19d5bfa6ab
3
+ metadata.gz: 2e10068f198522796f5fa20d9fc1d16359a2a2d58bb6cf7651105296694ade6f
4
+ data.tar.gz: a2b24629570ae71b7ab32091d55e9a1e62342c753a908af79cd467fade735940
5
5
  SHA512:
6
- metadata.gz: 9ea57ad190dafb992e0f86a63fd40c5a2c6e68246fecf45af82dc3f9fbd6f10b1fec683d09c6cb5a210acd0ed015bf8baabd2035d9c5ae17757c6f61bfe5994d
7
- data.tar.gz: 869845824b19069cda5ba276cd053e22343c65f08365f26ab109de29dc230e9724ce6d9bacd75eca81ccb7aba4ab062755b31163a2bc3da1a579a2304729ea98
6
+ metadata.gz: 115b04730027c35752567beaf65f079302de63917a78d1d3583541b644c4cfcedbb93c8334591bbec18581463db63ecff334a18a60758b75537338657d6cd747
7
+ data.tar.gz: 6599da778ffc3f7e39fb4a8586bf1300ef30e6ec123041cde90fe6041e1463555d44d016a496c9858026a39d8a7e76f3b33bc74de8bb9a9e1fc3900d4e0a41bd
data/CHANGELOG.md CHANGED
@@ -1,7 +1,13 @@
1
1
  # Changelog
2
2
 
3
- ## [0.1.0] - 2023-08-04
3
+ ## [0.2.0] - 2023-08-04
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/README.md CHANGED
@@ -12,10 +12,11 @@ gem 'gem_compat_scan'
12
12
 
13
13
  ## Usage
14
14
 
15
- To use GemCompatScan, simply run the following command in your project's root directory:
15
+ To use GemCompatScan, simply add below code in your project file
16
16
 
17
17
  ```ruby
18
- bin/gem_compat_scan
18
+ require 'gem_compat_scan'
19
+ GemCompatScan.run
19
20
  ```
20
21
 
21
22
  This command will scan your project's Gemfile, compare the currently used gem versions with the latest available versions, and generate a PDF report named gem_updates_report.pdf in the same directory.
@@ -34,8 +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'
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'
39
41
 
40
42
  # Optional: Add development dependencies (for testing and development)
41
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
- 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.1.0"
4
+ VERSION = "0.2.1"
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,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.1.0
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-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
@@ -16,28 +16,56 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
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: '0'
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: '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
55
+ - !ruby/object:Gem::Dependency
56
+ name: gems
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 1.2.0
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 1.2.0
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: rspec
43
71
  requirement: !ruby/object:Gem::Requirement