lib/gdk/diagnostic/version.rb (39 lines of code) (raw):
# frozen_string_literal: true
require 'date'
module GDK
module Diagnostic
class Version < Base
TITLE = 'GDK Version'
MAX_ALLOWED_DAYS = 7
def success?
!outdated?
end
def detail
return if success?
<<~MESSAGE
An update for GDK is available.
- The latest commit of your GDK is #{days_old} days old.
- #{version.diff_message}
MESSAGE
end
private
# If current commit is less than MAX_ALLOWED_DAYS old, we don't even fetch the most recent
# commit to compare. Otherwise, compares if the current commit is more the MAX_ALLOWED_DAYS
# older than latest_main_commit
def outdated?
return false if days_old < MAX_ALLOWED_DAYS
days_between(
version.latest_main_commit.timestamp,
version.current_commit.timestamp
) >= MAX_ALLOWED_DAYS
end
def days_old
@days_old ||= days_between(::Date.today, version.current_commit.timestamp)
end
def days_between(start_date, end_date)
(start_date - end_date).to_i
end
def version
@version ||= ::GDK::VersionChecker.new(
service_path: GDK.root
)
end
end
end
end