gems.ruby_dep-1.5.0.lib.ruby_dep.warning.rb Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sass-maven-plugin Show documentation
Show all versions of sass-maven-plugin Show documentation
A Maven Plugin that compiles Sass files.
require 'ruby_dep/logger'
require 'ruby_dep/ruby_version'
module RubyDep
PROJECT_URL = 'http://github.com/e2/ruby_dep'.freeze
class Warning
DISABLING_ENVIRONMENT_VAR = 'RUBY_DEP_GEM_SILENCE_WARNINGS'.freeze
PREFIX = 'RubyDep: WARNING: '.freeze
WARNING = {
insecure: 'Your Ruby has security vulnerabilities!'.freeze,
buggy: 'Your Ruby is outdated/buggy.'.freeze,
untracked: 'Your Ruby may not be supported.'.freeze
}.freeze
NOTICE_RECOMMENDATION = 'Your Ruby is: %s (%s).'\
' Recommendation: upgrade to %s.'.freeze
NOTICE_BUGGY_ALTERNATIVE = '(Or, at least to %s)'.freeze
NOTICE_HOW_TO_DISABLE = '(To disable warnings, see:'\
"#{PROJECT_URL}/wiki/Disabling-warnings )".freeze
NOTICE_OPEN_ISSUE = 'If you need this version supported,'\
" please open an issue at #{PROJECT_URL}".freeze
def initialize
@version = RubyVersion.new(RUBY_VERSION, RUBY_ENGINE)
end
def show_warnings
return if silenced?
return warn_ruby(WARNING[status]) if WARNING.key?(status)
return if status == :unknown
raise "Unknown problem type: #{problem.inspect}"
end
def silence!
ENV[DISABLING_ENVIRONMENT_VAR] = '1'
end
private
def silenced?
value = ENV[DISABLING_ENVIRONMENT_VAR]
(value || '0') !~ /^0|false|no|n$/
end
def status
@version.status
end
def warn_ruby(msg)
RubyDep.logger.tap do |logger|
logger.warn(PREFIX + msg)
logger.info(PREFIX + recommendation)
logger.info(PREFIX + NOTICE_HOW_TO_DISABLE)
end
end
def recommendation
return unrecognized_msg unless @version.recognized?
return recommendation_msg unless status == :insecure
[recommendation_msg, safer_alternatives_msg].join(' ')
end
def unrecognized_msg
format(
"Your Ruby is: %s '%s' (unrecognized). %s",
@version.version,
@version.engine,
NOTICE_OPEN_ISSUE
)
end
def recommended_versions
@version.recommended(:unknown)
end
def buggy_alternatives
@version.recommended(:buggy)
end
def recommendation_msg
format(
NOTICE_RECOMMENDATION,
@version.version,
status,
recommended_versions.join(' or ')
)
end
def safer_alternatives_msg
format(NOTICE_BUGGY_ALTERNATIVE, buggy_alternatives.join(' or '))
end
end
end
© 2015 - 2025 Weber Informatics LLC | Privacy Policy