lib/cutting_edge/workers/badge.rb in cutting_edge-0.0.1 vs lib/cutting_edge/workers/badge.rb in cutting_edge-0.1
- old
+ new
@@ -1,22 +1,44 @@
-require File.expand_path('../../badge.rb', __FILE__)
require File.expand_path('../helpers.rb', __FILE__)
+module CuttingEdge
+ BADGE_TEMPLATE = File.read(File.expand_path('../../templates/badge.svg.erb', __FILE__)) unless defined?(BADGE_TEMPLATE)
+ BADGE_OK = File.read(File.expand_path('../../public/images/ok.svg', __FILE__)) unless defined?(BADGE_OK)
+ BADGE_ERROR = File.read(File.expand_path('../../public/images/error.svg', __FILE__)) unless defined?(BADGE_ERROR)
+ BADGE_BASE_WIDTH = 25 unless defined?(BADGE_BASE_WIDTH)
+ BADGE_CELL_WIDTH = 25 unless defined?(BADGE_CELL_WIDTH)
+ BADGE_COLORS = {
+ ok: '#4c1',
+ outdated_patch: '#dfb317',
+ outdated_minor: '#fe7d37',
+ outdated_major: '#e05d44',
+ unknown: '#9f9f9f'
+ } unless defined?(BADGE_COLORS)
+ BADGE_LAYOUT = [:ok, :outdated_patch, :outdated_minor, :outdated_major, :unknown] unless defined?(BADGE_LAYOUT)
+end
+
class BadgeWorker < GenericWorker
def perform(identifier)
log_info 'Running Worker!'
dependencies = get_from_store(identifier)
- if dependencies
- status = generate_status(dependencies[:outdated])
- add_to_store("svg-#{identifier}", Badge.build_badge(status, dependencies[:outdated_total]))
+ if dependencies && !dependencies.empty? && !(dependencies[:outdated] == :unknown)
+ result = if dependencies[:outdated] == :up_to_date
+ CuttingEdge::BADGE_OK
+ else
+ dependencies = ::CuttingEdge::BADGE_LAYOUT.map { |k| [k, dependencies[k]] }.to_h.
+ delete_if {|_, number| number == 0}
+ ERB.new(CuttingEdge::BADGE_TEMPLATE).result_with_hash(
+ base_width: CuttingEdge::BADGE_BASE_WIDTH,
+ cell_width: CuttingEdge::BADGE_CELL_WIDTH,
+ colors: CuttingEdge::BADGE_COLORS,
+ dependencies: dependencies
+ )
+ end
+ else
+ result = CuttingEdge::BADGE_ERROR
end
+
+ add_to_store("svg-#{identifier}", result)
GC.start
- end
-
- private
-
- def generate_status(status)
- # status is more specific than Badge.build_badge currently expects, so make it a bit less so
- status == :up_to_date ? status : :out_of_date
end
end
\ No newline at end of file