workarea-upgrade 3.0.2
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/.editorconfig +20 -0
 - data/.github/ISSUE_TEMPLATE/bug_report.md +37 -0
 - data/.github/ISSUE_TEMPLATE/documentation-request.md +17 -0
 - data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
 - data/.gitignore +11 -0
 - data/.rspec +2 -0
 - data/.rubocop.yml +327 -0
 - data/CHANGELOG.md +285 -0
 - data/Gemfile +17 -0
 - data/README.md +210 -0
 - data/Rakefile +30 -0
 - data/bin/rails +18 -0
 - data/exe/workarea_upgrade +7 -0
 - data/lib/workarea/upgrade.rb +26 -0
 - data/lib/workarea/upgrade/cli.rb +289 -0
 - data/lib/workarea/upgrade/diff.rb +87 -0
 - data/lib/workarea/upgrade/diff/current_app.rb +15 -0
 - data/lib/workarea/upgrade/diff/gem_diff.rb +99 -0
 - data/lib/workarea/upgrade/diff/workarea_file.rb +43 -0
 - data/lib/workarea/upgrade/engine.rb +12 -0
 - data/lib/workarea/upgrade/gemfile.rb +102 -0
 - data/lib/workarea/upgrade/report.rb +176 -0
 - data/lib/workarea/upgrade/report_card.rb +94 -0
 - data/lib/workarea/upgrade/version.rb +5 -0
 - data/workarea-upgrade.gemspec +25 -0
 - metadata +112 -0
 
| 
         @@ -0,0 +1,94 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Workarea
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Upgrade
         
     | 
| 
      
 3 
     | 
    
         
            +
                class ReportCard
         
     | 
| 
      
 4 
     | 
    
         
            +
                  CATEGORIES = %w(
         
     | 
| 
      
 5 
     | 
    
         
            +
                    assets
         
     | 
| 
      
 6 
     | 
    
         
            +
                    controllers
         
     | 
| 
      
 7 
     | 
    
         
            +
                    helpers
         
     | 
| 
      
 8 
     | 
    
         
            +
                    listeners
         
     | 
| 
      
 9 
     | 
    
         
            +
                    mailers
         
     | 
| 
      
 10 
     | 
    
         
            +
                    models
         
     | 
| 
      
 11 
     | 
    
         
            +
                    services
         
     | 
| 
      
 12 
     | 
    
         
            +
                    view_models
         
     | 
| 
      
 13 
     | 
    
         
            +
                    views
         
     | 
| 
      
 14 
     | 
    
         
            +
                    workers
         
     | 
| 
      
 15 
     | 
    
         
            +
                  )
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                  def initialize(diff)
         
     | 
| 
      
 18 
     | 
    
         
            +
                    @diff = diff
         
     | 
| 
      
 19 
     | 
    
         
            +
                  end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                  def results
         
     | 
| 
      
 22 
     | 
    
         
            +
                    CATEGORIES.inject({}) do |memo, category|
         
     | 
| 
      
 23 
     | 
    
         
            +
                      memo[category] = calculate_grade(category)
         
     | 
| 
      
 24 
     | 
    
         
            +
                      memo
         
     | 
| 
      
 25 
     | 
    
         
            +
                    end
         
     | 
| 
      
 26 
     | 
    
         
            +
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                  def customized_percents
         
     | 
| 
      
 29 
     | 
    
         
            +
                    @customized_percents ||= CATEGORIES.inject({}) do |memo, category|
         
     | 
| 
      
 30 
     | 
    
         
            +
                      percent_customized = customized_totals[category] / changed_totals[category].to_f
         
     | 
| 
      
 31 
     | 
    
         
            +
                      percent_customized *= 100
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                      memo[category] = percent_customized.nan? ? 0 : percent_customized.round
         
     | 
| 
      
 34 
     | 
    
         
            +
                      memo
         
     | 
| 
      
 35 
     | 
    
         
            +
                    end
         
     | 
| 
      
 36 
     | 
    
         
            +
                  end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                  # If a file was decorated or overridden and removed, this is the
         
     | 
| 
      
 39 
     | 
    
         
            +
                  # biggest pain point.
         
     | 
| 
      
 40 
     | 
    
         
            +
                  def worst_files
         
     | 
| 
      
 41 
     | 
    
         
            +
                    @worst_files ||= CATEGORIES.inject({}) do |memo, category|
         
     | 
| 
      
 42 
     | 
    
         
            +
                      memo[category] = customized_files_now_missing
         
     | 
| 
      
 43 
     | 
    
         
            +
                                         .select { |f| f.include?(category) }
         
     | 
| 
      
 44 
     | 
    
         
            +
                                         .count
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                      memo
         
     | 
| 
      
 47 
     | 
    
         
            +
                    end
         
     | 
| 
      
 48 
     | 
    
         
            +
                  end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                  def changed_totals
         
     | 
| 
      
 51 
     | 
    
         
            +
                    @changed_totals ||= CATEGORIES.inject({}) do |memo, category|
         
     | 
| 
      
 52 
     | 
    
         
            +
                      memo[category] = @diff.all.select { |f| f.include?(category) }.count
         
     | 
| 
      
 53 
     | 
    
         
            +
                      memo
         
     | 
| 
      
 54 
     | 
    
         
            +
                    end
         
     | 
| 
      
 55 
     | 
    
         
            +
                  end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                  def customized_totals
         
     | 
| 
      
 58 
     | 
    
         
            +
                    @customized_totals ||= CATEGORIES.inject({}) do |memo, category|
         
     | 
| 
      
 59 
     | 
    
         
            +
                      memo[category] = @diff.for_current_app.select { |f| f.include?(category) }.count
         
     | 
| 
      
 60 
     | 
    
         
            +
                      memo
         
     | 
| 
      
 61 
     | 
    
         
            +
                    end
         
     | 
| 
      
 62 
     | 
    
         
            +
                  end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                  def calculate_grade(category)
         
     | 
| 
      
 65 
     | 
    
         
            +
                    customized_total = customized_totals[category]
         
     | 
| 
      
 66 
     | 
    
         
            +
                    return 'A' if customized_total <= 3
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
                    percent_customized = customized_percents[category]
         
     | 
| 
      
 69 
     | 
    
         
            +
                    return 'A' if percent_customized < 5
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
                    score = worst_files[category]
         
     | 
| 
      
 72 
     | 
    
         
            +
                    score += percent_customized
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
                    if score.between?(0, 9)
         
     | 
| 
      
 75 
     | 
    
         
            +
                      'A'
         
     | 
| 
      
 76 
     | 
    
         
            +
                    elsif score.between?(10, 24)
         
     | 
| 
      
 77 
     | 
    
         
            +
                      'B'
         
     | 
| 
      
 78 
     | 
    
         
            +
                    elsif score.between?(25, 34)
         
     | 
| 
      
 79 
     | 
    
         
            +
                      'C'
         
     | 
| 
      
 80 
     | 
    
         
            +
                    elsif score.between?(35, 44)
         
     | 
| 
      
 81 
     | 
    
         
            +
                      'D'
         
     | 
| 
      
 82 
     | 
    
         
            +
                    else
         
     | 
| 
      
 83 
     | 
    
         
            +
                      'F'
         
     | 
| 
      
 84 
     | 
    
         
            +
                    end
         
     | 
| 
      
 85 
     | 
    
         
            +
                  end
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
                  private
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
                  def customized_files_now_missing
         
     | 
| 
      
 90 
     | 
    
         
            +
                    @diff.customized_files & @diff.removed
         
     | 
| 
      
 91 
     | 
    
         
            +
                  end
         
     | 
| 
      
 92 
     | 
    
         
            +
                end
         
     | 
| 
      
 93 
     | 
    
         
            +
              end
         
     | 
| 
      
 94 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,25 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            $LOAD_PATH.push File.expand_path('lib', __dir__)
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # Maintain your gem's version:
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'workarea/upgrade/version'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            # Describe your gem and declare its dependencies:
         
     | 
| 
      
 7 
     | 
    
         
            +
            Gem::Specification.new do |s|
         
     | 
| 
      
 8 
     | 
    
         
            +
              s.name        = 'workarea-upgrade'
         
     | 
| 
      
 9 
     | 
    
         
            +
              s.version     = Workarea::Upgrade::VERSION
         
     | 
| 
      
 10 
     | 
    
         
            +
              s.authors     = ['Ben Crouse', 'Curt Howard']
         
     | 
| 
      
 11 
     | 
    
         
            +
              s.email       = ['bcrouse@workarea.com', 'choward@workarea.com']
         
     | 
| 
      
 12 
     | 
    
         
            +
              s.homepage    = 'https://github.com/workarea-commerce/workarea-upgrade'
         
     | 
| 
      
 13 
     | 
    
         
            +
              s.summary     = 'Workarea upgrade tools'
         
     | 
| 
      
 14 
     | 
    
         
            +
              s.description = 'Upgrade tools for the Workarea commerce system'
         
     | 
| 
      
 15 
     | 
    
         
            +
              s.files       = `git ls-files`.split("\n")
         
     | 
| 
      
 16 
     | 
    
         
            +
              s.bindir      = 'exe'
         
     | 
| 
      
 17 
     | 
    
         
            +
              s.executable  = 'workarea_upgrade'
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
              s.required_ruby_version = '>= 2.0.0'
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              s.add_dependency 'bundler', '~> 2.0.0'
         
     | 
| 
      
 22 
     | 
    
         
            +
              s.add_dependency 'diffy', '~> 3.1.0'
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
              s.add_development_dependency 'workarea', '~> 3.x'
         
     | 
| 
      
 25 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,112 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: workarea-upgrade
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 3.0.2
         
     | 
| 
      
 5 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 6 
     | 
    
         
            +
            authors:
         
     | 
| 
      
 7 
     | 
    
         
            +
            - Ben Crouse
         
     | 
| 
      
 8 
     | 
    
         
            +
            - Curt Howard
         
     | 
| 
      
 9 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 10 
     | 
    
         
            +
            bindir: exe
         
     | 
| 
      
 11 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2020-01-22 00:00:00.000000000 Z
         
     | 
| 
      
 13 
     | 
    
         
            +
            dependencies:
         
     | 
| 
      
 14 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 15 
     | 
    
         
            +
              name: bundler
         
     | 
| 
      
 16 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 17 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 18 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 19 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 20 
     | 
    
         
            +
                    version: 2.0.0
         
     | 
| 
      
 21 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 22 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 23 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 24 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 25 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 26 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 27 
     | 
    
         
            +
                    version: 2.0.0
         
     | 
| 
      
 28 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 29 
     | 
    
         
            +
              name: diffy
         
     | 
| 
      
 30 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 31 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 32 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 33 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 34 
     | 
    
         
            +
                    version: 3.1.0
         
     | 
| 
      
 35 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 36 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 37 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 38 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 39 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 40 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 41 
     | 
    
         
            +
                    version: 3.1.0
         
     | 
| 
      
 42 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 43 
     | 
    
         
            +
              name: workarea
         
     | 
| 
      
 44 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 45 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 46 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 47 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 48 
     | 
    
         
            +
                    version: 3.x
         
     | 
| 
      
 49 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 50 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 51 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 52 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 53 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 54 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 55 
     | 
    
         
            +
                    version: 3.x
         
     | 
| 
      
 56 
     | 
    
         
            +
            description: Upgrade tools for the Workarea commerce system
         
     | 
| 
      
 57 
     | 
    
         
            +
            email:
         
     | 
| 
      
 58 
     | 
    
         
            +
            - bcrouse@workarea.com
         
     | 
| 
      
 59 
     | 
    
         
            +
            - choward@workarea.com
         
     | 
| 
      
 60 
     | 
    
         
            +
            executables:
         
     | 
| 
      
 61 
     | 
    
         
            +
            - workarea_upgrade
         
     | 
| 
      
 62 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 63 
     | 
    
         
            +
            extra_rdoc_files: []
         
     | 
| 
      
 64 
     | 
    
         
            +
            files:
         
     | 
| 
      
 65 
     | 
    
         
            +
            - ".editorconfig"
         
     | 
| 
      
 66 
     | 
    
         
            +
            - ".github/ISSUE_TEMPLATE/bug_report.md"
         
     | 
| 
      
 67 
     | 
    
         
            +
            - ".github/ISSUE_TEMPLATE/documentation-request.md"
         
     | 
| 
      
 68 
     | 
    
         
            +
            - ".github/ISSUE_TEMPLATE/feature_request.md"
         
     | 
| 
      
 69 
     | 
    
         
            +
            - ".gitignore"
         
     | 
| 
      
 70 
     | 
    
         
            +
            - ".rspec"
         
     | 
| 
      
 71 
     | 
    
         
            +
            - ".rubocop.yml"
         
     | 
| 
      
 72 
     | 
    
         
            +
            - CHANGELOG.md
         
     | 
| 
      
 73 
     | 
    
         
            +
            - Gemfile
         
     | 
| 
      
 74 
     | 
    
         
            +
            - README.md
         
     | 
| 
      
 75 
     | 
    
         
            +
            - Rakefile
         
     | 
| 
      
 76 
     | 
    
         
            +
            - bin/rails
         
     | 
| 
      
 77 
     | 
    
         
            +
            - exe/workarea_upgrade
         
     | 
| 
      
 78 
     | 
    
         
            +
            - lib/workarea/upgrade.rb
         
     | 
| 
      
 79 
     | 
    
         
            +
            - lib/workarea/upgrade/cli.rb
         
     | 
| 
      
 80 
     | 
    
         
            +
            - lib/workarea/upgrade/diff.rb
         
     | 
| 
      
 81 
     | 
    
         
            +
            - lib/workarea/upgrade/diff/current_app.rb
         
     | 
| 
      
 82 
     | 
    
         
            +
            - lib/workarea/upgrade/diff/gem_diff.rb
         
     | 
| 
      
 83 
     | 
    
         
            +
            - lib/workarea/upgrade/diff/workarea_file.rb
         
     | 
| 
      
 84 
     | 
    
         
            +
            - lib/workarea/upgrade/engine.rb
         
     | 
| 
      
 85 
     | 
    
         
            +
            - lib/workarea/upgrade/gemfile.rb
         
     | 
| 
      
 86 
     | 
    
         
            +
            - lib/workarea/upgrade/report.rb
         
     | 
| 
      
 87 
     | 
    
         
            +
            - lib/workarea/upgrade/report_card.rb
         
     | 
| 
      
 88 
     | 
    
         
            +
            - lib/workarea/upgrade/version.rb
         
     | 
| 
      
 89 
     | 
    
         
            +
            - workarea-upgrade.gemspec
         
     | 
| 
      
 90 
     | 
    
         
            +
            homepage: https://github.com/workarea-commerce/workarea-upgrade
         
     | 
| 
      
 91 
     | 
    
         
            +
            licenses: []
         
     | 
| 
      
 92 
     | 
    
         
            +
            metadata: {}
         
     | 
| 
      
 93 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 94 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 95 
     | 
    
         
            +
            require_paths:
         
     | 
| 
      
 96 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 97 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 98 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 99 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 100 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 101 
     | 
    
         
            +
                  version: 2.0.0
         
     | 
| 
      
 102 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 103 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 104 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 105 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 106 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 107 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 108 
     | 
    
         
            +
            rubygems_version: 3.1.2
         
     | 
| 
      
 109 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 110 
     | 
    
         
            +
            specification_version: 4
         
     | 
| 
      
 111 
     | 
    
         
            +
            summary: Workarea upgrade tools
         
     | 
| 
      
 112 
     | 
    
         
            +
            test_files: []
         
     |