lib/hoe/halostatue/strict_warnings.rb
# frozen_string_literal: true $VERBOSE = true Warning[:deprecated] = true module Hoe::Halostatue::StrictWarnings # :nodoc: class << self attr_accessor :project_root attr_reader :allowed attr_reader :suppressed def allowed=(patterns) @allowed = Regexp.union(*Array(patterns)) end def suppressed=(patterns) @suppressed = Regex.union(*Array(patterns)) end end WarningError = Class.new(StandardError) def warn(message, ...) pattern = Hoe::Halostatue::StrictWarnings.suppressed return if pattern&.match?(message) super return unless ENV["STRICT_WARNINGS"] || ENV["CI"] project_root = Hoe::Halostatue::StrictWarnings.project_root return if project_root && !message.include?(project_root) pattern = Hoe::Halostatue::StrictWarnings.allowed return if pattern&.match?(message) raise WarningError.new(message) end end Warning.singleton_class.prepend(Hoe::Halostatue::StrictWarnings)