def show
      # collect metadata
      groups = Guard.state.session.groups.all

      objects = []

      empty_plugin = OpenStruct.new
      empty_plugin.options = [["", nil]]

      groups.each do |group|
        plugins = Array(Guard.state.session.plugins.all(group: group.name))
        plugins = [empty_plugin] if plugins.empty?
        plugins.each do |plugin|
          options = plugin.options
          options = [["", nil]] if options.empty?
          options.each do |option, raw_value|
            value = raw_value.nil? ? "" : raw_value.inspect
            objects << [group.title, plugin.title, option.to_s, value]
          end
        end
      end

      # presentation
      rows = []
      prev_group = prev_plugin = prev_option = prev_value = nil
      objects.each do |group, plugin, option, value|
        group_changed = prev_group != group
        plugin_changed = (prev_plugin != plugin || group_changed)

        rows << :split if group_changed || plugin_changed

        rows << {
          Group: group_changed ? group : "",
          Plugin: plugin_changed ? plugin : "",
          Option: option,
          Value: value
        }

        prev_group = group
        prev_plugin = plugin
        prev_option = option
        prev_value = value
      end

      # render
      Formatador.display_compact_table(
        rows.drop(1),
        [:Group, :Plugin, :Option, :Value]
      )
    end
def show
      # collect metadata
      groups = Guard.state.session.groups.all

      objects = []

      empty_plugin = OpenStruct.new
      empty_plugin.options = [["", nil]]

      groups.each do |group|
        plugins = Array(Guard.state.session.plugins.all(group: group.name))
        plugins = [empty_plugin] if plugins.empty?
        plugins.each do |plugin|
          options = plugin.options
          options = [["", nil]] if options.empty?
          options.each do |option, raw_value|
            value = raw_value.nil? ? "" : raw_value.inspect
            objects << [group.title, plugin.title, option.to_s, value]
          end
        end
      end

      # presentation
      rows = []
      prev_group = prev_plugin = prev_option = prev_value = nil
      objects.each do |group, plugin, option, value|
        group_changed = prev_group != group
        plugin_changed = (prev_plugin != plugin || group_changed)

        rows << :split if group_changed || plugin_changed

        rows << {
          Group: group_changed ? group : "",
          Plugin: plugin_changed ? plugin : "",
          Option: option,
          Value: value
        }

        prev_group = group
        prev_plugin = plugin
        prev_option = option
        prev_value = value
      end

      # render
      Formatador.display_compact_table(
        rows.drop(1),
        [:Group, :Plugin, :Option, :Value]
      )
    end
Shows all Guard plugins and their options that are defined in
 the `Guardfile`.

 @see CLI#show