Class: Guard::Internals::Session
- Inherits:
-
Object
- Object
- Guard::Internals::Session
- Defined in:
- lib/guard/internals/session.rb
Overview
TODO: split into a commandline class and session (plugins, groups) TODO: swap session and metadata
Constant Summary collapse
- DEFAULT_OPTIONS =
{ clear: false, debug: false, no_bundler_warning: false, # User defined scopes group: [], plugin: [], # Notifier notify: true, # Interactor no_interactions: false, # Guardfile options: # guardfile_contents guardfile: nil, # Listener options # TODO: rename to watchdirs? watchdir: Dir.pwd, latency: nil, force_polling: false, wait_for_delay: nil, listen_on: nil }
Instance Attribute Summary collapse
-
#groups ⇒ Object
readonly
Returns the value of attribute groups.
-
#guardfile_group_scope ⇒ Object
readonly
TODO: create a EvaluatorResult class?.
-
#guardfile_ignore ⇒ Object
Returns the value of attribute guardfile_ignore.
-
#guardfile_ignore_bang ⇒ Object
Returns the value of attribute guardfile_ignore_bang.
-
#guardfile_plugin_scope ⇒ Object
readonly
Returns the value of attribute guardfile_plugin_scope.
-
#interactor_name ⇒ Object
readonly
Returns the value of attribute interactor_name.
-
#plugins ⇒ Object
readonly
Returns the value of attribute plugins.
Instance Method Summary collapse
- #clearing(on) ⇒ Object
- #clearing? ⇒ Boolean (also: #clear?)
- #cmdline_groups ⇒ Object
- #cmdline_plugins ⇒ Object
-
#convert_scope(entries) ⇒ Object
TODO: call this from within action, not within interactor command.
- #debug? ⇒ Boolean
- #evaluator_options ⇒ Object
- #guardfile_notification=(config) ⇒ Object
- #guardfile_scope(scope) ⇒ Object
-
#initialize(new_options) ⇒ Session
constructor
A new instance of Session.
- #listener_args ⇒ Object
- #notify_options ⇒ Object
- #watchdirs ⇒ Object
-
#watchdirs=(dirs) ⇒ Object
set by Dsl with :directories() command.
Constructor Details
#initialize(new_options) ⇒ Session
Returns a new instance of Session.
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/guard/internals/session.rb', line 51 def initialize() @options = Options.new(, 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 |
Instance Attribute Details
#groups ⇒ Object (readonly)
Returns the value of attribute groups.
13 14 15 |
# File 'lib/guard/internals/session.rb', line 13 def groups @groups end |
#guardfile_group_scope ⇒ Object (readonly)
TODO: create a EvaluatorResult class?
89 90 91 |
# File 'lib/guard/internals/session.rb', line 89 def guardfile_group_scope @guardfile_group_scope end |
#guardfile_ignore ⇒ Object
Returns the value of attribute guardfile_ignore.
93 94 95 |
# File 'lib/guard/internals/session.rb', line 93 def guardfile_ignore @guardfile_ignore end |
#guardfile_ignore_bang ⇒ Object
Returns the value of attribute guardfile_ignore_bang.
91 92 93 |
# File 'lib/guard/internals/session.rb', line 91 def guardfile_ignore_bang @guardfile_ignore_bang end |
#guardfile_plugin_scope ⇒ Object (readonly)
Returns the value of attribute guardfile_plugin_scope.
90 91 92 |
# File 'lib/guard/internals/session.rb', line 90 def guardfile_plugin_scope @guardfile_plugin_scope end |
#interactor_name ⇒ Object (readonly)
Returns the value of attribute interactor_name.
159 160 161 |
# File 'lib/guard/internals/session.rb', line 159 def interactor_name @interactor_name end |
#plugins ⇒ Object (readonly)
Returns the value of attribute plugins.
12 13 14 |
# File 'lib/guard/internals/session.rb', line 12 def plugins @plugins end |
Instance Method Details
#clearing(on) ⇒ Object
98 99 100 |
# File 'lib/guard/internals/session.rb', line 98 def clearing(on) @clear = on end |
#clearing? ⇒ Boolean Also known as: clear?
102 103 104 |
# File 'lib/guard/internals/session.rb', line 102 def clearing? @clear end |
#cmdline_groups ⇒ Object
43 44 45 |
# File 'lib/guard/internals/session.rb', line 43 def cmdline_groups @cmdline_groups.dup.freeze end |
#cmdline_plugins ⇒ Object
47 48 49 |
# File 'lib/guard/internals/session.rb', line 47 def cmdline_plugins @cmdline_plugins.dup.freeze end |
#convert_scope(entries) ⇒ Object
TODO: call this from within action, not within interactor command
162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
# 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? ⇒ Boolean
108 109 110 |
# File 'lib/guard/internals/session.rb', line 108 def debug? @debug end |
#evaluator_options ⇒ Object
136 137 138 139 140 141 142 143 |
# File 'lib/guard/internals/session.rb', line 136 def opts = { guardfile: @options[:guardfile] } # TODO: deprecate :guardfile_contents if @options[:guardfile_contents] opts[:contents] = @options[:guardfile_contents] end opts end |
#guardfile_notification=(config) ⇒ Object
155 156 157 |
# File 'lib/guard/internals/session.rb', line 155 def guardfile_notification=(config) @guardfile_notifier_options.merge!(config) end |
#guardfile_scope(scope) ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 86 |
# 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 ⇒ Object
123 124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/guard/internals/session.rb', line 123 def listener_args if @options[:listen_on] [:on, @options[:listen_on]] else = {} [:latency, :force_polling, :wait_for_delay].each do |option| [option] = @options[option] if @options[option] end = watchdirs.map { |dir| File. dir } [:to, *, ] end end |
#notify_options ⇒ Object
145 146 147 148 149 150 151 152 153 |
# File 'lib/guard/internals/session.rb', line 145 def names = @guardfile_notifier_options.keys return { notify: false } if names.include?(:off) { notify: @options[:notify], notifiers: @guardfile_notifier_options } end |
#watchdirs ⇒ Object
112 113 114 115 |
# File 'lib/guard/internals/session.rb', line 112 def watchdirs @watchdirs_from_guardfile ||= nil @watchdirs_from_guardfile || @watchdirs end |
#watchdirs=(dirs) ⇒ Object
set by Dsl with :directories() command
118 119 120 121 |
# File 'lib/guard/internals/session.rb', line 118 def watchdirs=(dirs) dirs = [Dir.pwd] if dirs.empty? @watchdirs_from_guardfile = dirs.map { |dir| File. dir } end |