class Toys::FlagGroup::ExactlyOne

A FlagGroup in which exactly one flag must be set

Public Instance Methods

validation_errors(seen) click to toggle source

@private

# File lib/toys/flag_group.rb, line 210
def validation_errors(seen)
  seen_names = []
  flags.each do |flag|
    seen_names << flag.display_name if seen.include?(flag.key)
  end
  if seen_names.size > 1
    str = "Exactly one flag out of group #{summary} is required, but #{seen_names.size}" \
          " were provided: #{seen_names.inspect}."
    [ArgParser::FlagGroupConstraintError.new(str)]
  elsif seen_names.empty?
    str = "Exactly one flag out of group #{summary} is required, but none were provided."
    [ArgParser::FlagGroupConstraintError.new(str)]
  else
    []
  end
end