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.
@@ -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,5 @@
1
+ module Workarea
2
+ module Upgrade
3
+ VERSION = '3.0.2'.freeze
4
+ end
5
+ 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: []