# frozen_string_literal: true # Used to track formulae that cannot be installed at the same time. FormulaConflict = Struct.new(:name, :reason) # Used to annotate formulae that duplicate macOS provided software # or cause conflicts when linked in. class KegOnlyReason attr_reader :reason def initialize(reason, explanation) @reason = reason @explanation = explanation end def valid? ![:provided_by_macos, :provided_by_osx, :shadowed_by_macos].include?(@reason) end def to_s return @explanation unless @explanation.empty? case @reason when :versioned_formula <<~EOS this is an alternate version of another formula EOS when :provided_by_macos <<~EOS macOS already provides this software and installing another version in parallel can cause all kinds of trouble EOS when :shadowed_by_macos <<~EOS macOS provides similar software and installing this software in parallel can cause all kinds of trouble EOS else @reason end.strip end end # Used to annotate formulae that don't require compiling or cannot build a bottle. class BottleDisableReason SUPPORTED_TYPES = [:unneeded, :disable].freeze def initialize(type, reason) @type = type @reason = reason end def unneeded? @type == :unneeded end def valid? SUPPORTED_TYPES.include? @type end def to_s return "This formula doesn't require compiling." if unneeded? @reason end end require "extend/os/formula_support"