class Guard::Internals::Session

TODO: split into a commandline class and session (plugins, groups) TODO: swap session and metadata

Constants

DEFAULT_OPTIONS

Attributes

groups[R]
guardfile_group_scope[R]

TODO: create a EvaluatorResult class?

guardfile_ignore[R]
guardfile_ignore_bang[RW]
guardfile_plugin_scope[R]
interactor_name[R]
plugins[R]

Public Class Methods

new(new_options) click to toggle source
# File lib/guard/internals/session.rb, line 51
def initialize(new_options)
  @options = Options.new(new_options, DEFAULT_OPTIONS)

  @plugins = Plugins.new
  @groups = Groups.new

  @cmdline_groups = @options[:group]
  @cmdline_plugins = @options[:plugin]

  @clear = @options[:clear]
  @debug = @options[:debug]
  @watchdirs = Array(@options[:watchdir])
  @notify = @options[:notify]
  @interactor_name = @options[:no_interactions] ? :sleep : :pry_wrapper

  @guardfile_plugin_scope = []
  @guardfile_group_scope = []
  @guardfile_ignore = []
  @guardfile_ignore_bang = []

  @guardfile_notifier_options = {}
end

Public Instance Methods

clear?()
Alias for: clearing?
clearing(on) click to toggle source
# File lib/guard/internals/session.rb, line 98
def clearing(on)
  @clear = on
end
clearing?() click to toggle source
# File lib/guard/internals/session.rb, line 102
def clearing?
  @clear
end
Also aliased as: clear?
cmdline_groups() click to toggle source
# File lib/guard/internals/session.rb, line 43
def cmdline_groups
  @cmdline_groups.dup.freeze
end
cmdline_plugins() click to toggle source
# File lib/guard/internals/session.rb, line 47
def cmdline_plugins
  @cmdline_plugins.dup.freeze
end
convert_scope(entries) click to toggle source

TODO: call this from within action, not within interactor command

# File lib/guard/internals/session.rb, line 162
def convert_scope(entries)
  scopes = { plugins: [], groups: [] }
  unknown = []

  entries.each do |entry|
    if plugin = plugins.all(entry).first
      scopes[:plugins] << plugin
    elsif group = groups.all(entry).first
      scopes[:groups] << group
    else
      unknown << entry
    end
  end

  [scopes, unknown]
end
debug?() click to toggle source
# File lib/guard/internals/session.rb, line 108
def debug?
  @debug
end
evaluator_options() click to toggle source
# File lib/guard/internals/session.rb, line 136
def evaluator_options
  opts = { guardfile: @options[:guardfile] }
  # TODO: deprecate :guardfile_contents
  if @options[:guardfile_contents]
    opts[:contents] = @options[:guardfile_contents]
  end
  opts
end
guardfile_ignore=(ignores) click to toggle source
# File lib/guard/internals/session.rb, line 94
def guardfile_ignore=(ignores)
  @guardfile_ignore += Array(ignores).flatten
end
guardfile_notification=(config) click to toggle source
# File lib/guard/internals/session.rb, line 155
def guardfile_notification=(config)
  @guardfile_notifier_options.merge!(config)
end
guardfile_scope(scope) click to toggle source
# File lib/guard/internals/session.rb, line 74
def guardfile_scope(scope)
  opts = scope.dup

  groups = Array(opts.delete(:groups))
  group = Array(opts.delete(:group))
  @guardfile_group_scope = Array(groups) + Array(group)

  plugins = Array(opts.delete(:plugins))
  plugin = Array(opts.delete(:plugin))
  @guardfile_plugin_scope = Array(plugins) + Array(plugin)

  fail "Unknown options: #{opts.inspect}" unless opts.empty?
end
listener_args() click to toggle source
# File lib/guard/internals/session.rb, line 123
def listener_args
  if @options[:listen_on]
    [:on, @options[:listen_on]]
  else
    listener_options = {}
    [:latency, :force_polling, :wait_for_delay].each do |option|
      listener_options[option] = @options[option] if @options[option]
    end
    expanded_watchdirs = watchdirs.map { |dir| File.expand_path dir }
    [:to, *expanded_watchdirs, listener_options]
  end
end
notify_options() click to toggle source
# File lib/guard/internals/session.rb, line 145
def notify_options
  names = @guardfile_notifier_options.keys
  return { notify: false } if names.include?(:off)

  {
    notify: @options[:notify],
    notifiers: @guardfile_notifier_options
  }
end
watchdirs() click to toggle source
# File lib/guard/internals/session.rb, line 112
def watchdirs
  @watchdirs_from_guardfile ||= nil
  @watchdirs_from_guardfile || @watchdirs
end
watchdirs=(dirs) click to toggle source

set by Dsl with :directories() command

# File lib/guard/internals/session.rb, line 118
def watchdirs=(dirs)
  dirs = [Dir.pwd] if dirs.empty?
  @watchdirs_from_guardfile = dirs.map { |dir| File.expand_path dir }
end