WIP SystemCheck library for executing checks from a rake task
This commit is contained in:
parent
19ee16a0f8
commit
500e5227a0
5 changed files with 111 additions and 0 deletions
12
lib/system_check.rb
Normal file
12
lib/system_check.rb
Normal 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
|
42
lib/system_check/base_check.rb
Normal file
42
lib/system_check/base_check.rb
Normal 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
|
18
lib/system_check/base_executor.rb
Normal file
18
lib/system_check/base_executor.rb
Normal 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
|
34
lib/system_check/simple_executor.rb
Normal file
34
lib/system_check/simple_executor.rb
Normal 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
|
|
@ -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)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue