lib/gdk/diagnostic/registry.rb (37 lines of code) (raw):
# frozen_string_literal: true
module GDK
module Diagnostic
class Registry < Base
TITLE = 'Registry'
def success?
return true unless GDK.config.registry.enabled?
migrations_ok?
end
def detail
return if success?
output = []
output << migrations_not_ok_message unless migrations_ok?
output.join("\n#{diagnostic_detail_break}\n")
end
private
def registry_bin_path
@registry_bin_path ||= config.registry.__registry_build_bin_path
end
def registry_config_path
@registry_config_path ||= config.gdk_root.join('registry/config.yml')
end
def migrations_check_command
@migrations_check_command ||= "#{registry_bin_path} database migrate status #{registry_config_path}"
end
def migrations_needing_attention
@migrations_needing_attention ||= Shellout.new(migrations_check_command).readlines.each_with_object([]) do |e, a|
m = e.match(/\A\|\s(?<migration>[^\s]+)\s+\| (?:no|unknown migration)\s+\|\z/)
next unless m
a << m[:migration]
end
end
def migrations_ok?
migrations_needing_attention.empty?
end
def migrations_not_ok_message
<<~MIGRATIONS_NOT_OK_MESSAGE
The following registry DB migrations don't appear to have been applied:
#{migrations_needing_attention.join("\n ")}
For full output you can run:
#{migrations_check_command}
To fix, you can run:
gdk reset-registry-data
MIGRATIONS_NOT_OK_MESSAGE
end
end
end
end