class Guard::DslDescriber


@see Guard::CLI
@see Guard::Dsl
`show` and ‘list`.
of it that is used in some inspection utility methods like the CLI commands
The DslDescriber evaluates the Guardfile and creates an internal structure

def _evaluate_guardfile


{Guard::Guardfile::Evaluator#evaluate_guardfile}.
Evaluates the `Guardfile` by delegating to
def _evaluate_guardfile
  ::Guard::Guardfile::Evaluator.new(options).evaluate_guardfile
end

def initialize(options = {})

Other tags:
    See: Guard::Guardfile::Evaluator#initialize -

Options Hash: (**options)
  • guardfile_contents (String) -- a string representing the content of a valid Guardfile
  • guardfile (String) -- the path to a valid Guardfile
def initialize(options = {})
  @options = options
  ::Guard.reset_groups
  ::Guard.reset_plugins
end

def list

Other tags:
    See: CLI#list -
def list
  _evaluate_guardfile
  rows = ::Guard::PluginUtil.plugin_names.sort.uniq.inject([]) do |rows, name|
    rows << { Plugin: name.capitalize, Guardfile: ::Guard.plugins(name) ? '✔' : '✘' }
  end
  Formatador.display_compact_table(rows, [:Plugin, :Guardfile])
end

def notifiers

Other tags:
    See: CLI#show -
def notifiers
  _evaluate_guardfile
  rows = ::Guard::Notifier::NOTIFIERS.inject(:merge).inject([]) do |rows, definition|
    name      = definition[0]
    clazz     = definition[1]
    available = clazz.available?(silent: true) ? '✔' : '✘'
    notifier  = ::Guard::Notifier.notifiers.find { |n| n[:name] == name }
    used      = notifier ? '✔' : '✘'
    options   = notifier ? notifier[:options] : {}
    defaults  = clazz.const_defined?(:DEFAULTS) ? clazz.const_get(:DEFAULTS) : {}
    options   = defaults.merge(options)
    options.delete(:silent)
    if options.empty?
      rows << :split
      rows << { Name: name, Available: available, Used: used, Option: '', Value: '' }
    else
      options.each_with_index do |(option, value), index|
        if index == 0
          rows << :split
          rows << { Name: name, Available: available, Used: used, Option: option.to_s, Value: value.inspect }
        else
          rows << { Name: '', Available: '', Used: '', Option: option.to_s, Value: value.inspect }
        end
      end
    end
    rows
  end
  Formatador.display_compact_table(rows.drop(1), [:Name, :Available, :Used, :Option, :Value])
end

def show

Other tags:
    See: CLI#show -
def show
  _evaluate_guardfile
  rows = ::Guard.groups.inject([]) do |rows, group|
    Array(::Guard.plugins(group: group.name)).each do |plugin|
      options = plugin.options.inject({}) { |o, (k, v)| o[k.to_s] = v; o }.sort
      if options.empty?
        rows << :split
        rows << { Group: group.title, Plugin: plugin.title, Option: '', Value: '' }
      else
        options.each_with_index do |(option, value), index|
          if index == 0
            rows << :split
            rows << { Group: group.title, Plugin: plugin.title, Option: option.to_s, Value: value.inspect }
          else
            rows << { Group: '', Plugin: '', Option: option.to_s, Value: value.inspect }
          end
        end
      end
    end
    rows
  end
  Formatador.display_compact_table(rows.drop(1), [:Group, :Plugin, :Option, :Value])
end