lib/gdk/diagnostic/dependencies.rb (39 lines of code) (raw):
# frozen_string_literal: true
module GDK
module Diagnostic
class Dependencies < Base
TITLE = 'GDK Dependencies'
def success?
checker.error_messages.empty?
end
def detail
return if success?
messages = checker.error_messages.join("\n").chomp
<<~MESSAGE
#{messages}
Please run:
(cd #{config.gdk_root} && rm -fr #{cache_files(true).map(&:to_s).join(' ')} && support/bootstrap)
For details on how to install, please visit:
https://gitlab.com/gitlab-org/gitlab-development-kit/blob/main/doc/index.md
MESSAGE
end
def correct!
cache_files.each(&:rmtree)
sh = Shellout.new('support/bootstrap')
sh.run
raise "Failed to run `support/bootstrap`:\n#{sh.read_stderr}" unless sh.success?
end
private
def checker
@checker ||= GDK::Dependencies::Checker.new.tap(&:check_all)
end
def cache_files(relative = false)
[
cache_file('.gdk_bootstrapped'),
cache_file('.gdk_platform_setup')
].map { |p| relative ? p.relative_path_from(config.gdk_root) : p }
end
def cache_file(path)
config.__cache_dir.join(path)
end
end
end
end