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
         |