module Velcro::Flags

Parsing flag options passed in by the CLI

Public Class Methods

included(base) click to toggle source
# File lib/velcro/concerns/flags.rb, line 4
def self.included(base)
  base.send(:attr_reader, :includes)
end

Public Instance Methods

establish_inclusions(flags, options) click to toggle source

rubocop:disable Metrics/AbcSize

# File lib/velcro/concerns/flags.rb, line 9
def establish_inclusions(flags, options)
  options = Hash[options.map{|k, v| [k.to_s, v] }]
  inclusions = Hash[*flags.map { |k| [k, nil] }.flatten].merge(options).dup

  if inclusions.values.compact.empty?
    # If no options were specified include all options
    inclusions.each{|k, _| inclusions[k] = true }
  elsif inclusions.values.include?(true)
    # If any options were specified as false, default the rest to true
    inclusions.each{|k, _| inclusions[k] = false if inclusions[k].nil? }
  else
    # If options were specified, but not as false, default the rest to false
    inclusions.each{|k, _| inclusions[k] = true if inclusions[k].nil? }
  end

  @includes = inclusions
end
included?(flag) click to toggle source

rubocop:enable Metrics/AbcSize

# File lib/velcro/concerns/flags.rb, line 28
def included?(flag)
  includes[flag.to_s]
end