WIP SystemCheck library for executing checks from a rake task

This commit is contained in:
Gabriel Mazetto 2017-02-13 00:33:31 +01:00
parent 19ee16a0f8
commit 500e5227a0
5 changed files with 111 additions and 0 deletions

12
lib/system_check.rb Normal file
View file

@ -0,0 +1,12 @@
module SystemCheck
def self.run(component, checks = {}, executor_klass = SimpleExecutor)
unless executor_klass.is_a? BaseExecutor
raise ArgumentError, 'Invalid executor'
end
executor = executor_klass.new(component)
executor.checks = checks.map do |check|
raise ArgumentError unless check.is_a? BaseCheck
end
end
end

View file

@ -0,0 +1,42 @@
module SystemCheck
class BaseCheck
def check?
raise NotImplementedError
end
def show_error
raise NotImplementedError
end
def skip?
false
end
def skip_message
end
protected
def try_fixing_it(*steps)
steps = steps.shift if steps.first.is_a?(Array)
puts ' Try fixing it:'.color(:blue)
steps.each do |step|
puts " #{step}"
end
end
def fix_and_rerun
puts ' Please fix the error above and rerun the checks.'.color(:red)
end
def for_more_information(*sources)
sources = sources.shift if sources.first.is_a?(Array)
puts ' For more information see:'.color(:blue)
sources.each do |source|
puts ' #{source}'
end
end
end
end

View file

@ -0,0 +1,18 @@
module SystemCheck
class BaseExecutor
attr_reader :checks
attr_reader :component
def initialize(component)
raise ArgumentError unless component.is_a? String
@component = component
@checks = Set.new
end
def <<(check)
raise ArgumentError unless check.is_a? BaseCheck
@checks << check
end
end
end

View file

@ -0,0 +1,34 @@
module SystemCheck
class SimpleExecutor < BaseExecutor
def execute
start_checking(component)
@checks.each do |check|
print "#{check.name}"
if check.skip?
puts "skipped #{'('+skip_message+')' if skip_message}".color(:magenta)
elsif check.check?
puts 'yes'.color(:green)
else
puts 'no'.color(:red)
check.show_error
end
end
finished_checking(component)
end
private
def start_checking(component)
puts "Checking #{component.color(:yellow)} ..."
puts ''
end
def finished_checking(component)
puts ''
puts "Checking #{component.color(:yellow)} ... #{"Finished".color(:green)}"
puts ''
end
end
end

View file

@ -848,10 +848,12 @@ namespace :gitlab do
# Helper methods # Helper methods
########################## ##########################
# @deprecated Please use SystemChecks
def fix_and_rerun def fix_and_rerun
puts " Please fix the error above and rerun the checks.".color(:red) puts " Please fix the error above and rerun the checks.".color(:red)
end end
# @deprecated Please use SystemChecks
def for_more_information(*sources) def for_more_information(*sources)
sources = sources.shift if sources.first.is_a?(Array) sources = sources.shift if sources.first.is_a?(Array)
@ -861,6 +863,7 @@ namespace :gitlab do
end end
end end
# @deprecated Please use SystemChecks
def finished_checking(component) def finished_checking(component)
puts "" puts ""
puts "Checking #{component.color(:yellow)} ... #{"Finished".color(:green)}" puts "Checking #{component.color(:yellow)} ... #{"Finished".color(:green)}"
@ -883,11 +886,13 @@ namespace :gitlab do
Gitlab.config.gitlab.user Gitlab.config.gitlab.user
end end
# @deprecated Please use SystemChecks
def start_checking(component) def start_checking(component)
puts "Checking #{component.color(:yellow)} ..." puts "Checking #{component.color(:yellow)} ..."
puts "" puts ""
end end
# @deprecated Please use SystemChecks
def try_fixing_it(*steps) def try_fixing_it(*steps)
steps = steps.shift if steps.first.is_a?(Array) steps = steps.shift if steps.first.is_a?(Array)