class Focus::Action

Public Instance Methods

call() click to toggle source

This method is used internally and should not be used within actions.

# File lib/focus/action.rb, line 32
def call
  perform
end
config() click to toggle source
# File lib/focus/action.rb, line 36
def config
  ContextualConfiguration.new(context)
end
error_message() click to toggle source
# File lib/focus/action.rb, line 27
def error_message
  "#{self.class.to_s.split('::').last} failed"
end
perform() click to toggle source
# File lib/focus/action.rb, line 25
def perform; end

Private Instance Methods

_evaluate_step(klass, args) click to toggle source
# File lib/focus/action.rb, line 67
def _evaluate_step(klass, args)
  action = klass.to_s.gsub(/^.*::/, "")
  step = "Running #{action}..."

  Focus::STDOUT.step(step, quiet: context.quiet) do
    result = klass.call(args)
    raise FailedActionError, _failed_action_error(result) unless result.success?
  end
end
_failed_action_error(obj) click to toggle source
# File lib/focus/action.rb, line 77
def _failed_action_error(obj)
  "#{obj.action}: #{obj.error}"
end
break_seconds() click to toggle source
# File lib/focus/action.rb, line 58
def break_seconds
  focus_seconds * 0.2
end
debug_output(*args) click to toggle source
# File lib/focus/action.rb, line 81
def debug_output(*args)
  Focus::STDOUT.debug_output args
end
fail_action!(opts = {}) click to toggle source
# File lib/focus/action.rb, line 62
def fail_action!(opts = {})
  raise ArgumentError, "An `:error` key must be provided to fail an action" unless (opts.keys & [:error, "error"]).any?
  context.fail!(opts.merge(action: self.class.to_s.split("::").last))
end
focus_minutes() click to toggle source
# File lib/focus/action.rb, line 46
def focus_minutes
  context.focus_minutes || context.minutes.to_i
end
focus_seconds() click to toggle source
# File lib/focus/action.rb, line 50
def focus_seconds
  context.minutes.to_f * 60
end
focus_target() click to toggle source
# File lib/focus/action.rb, line 42
def focus_target
  context.focus_target || context.target || "?"
end
seconds_focused() click to toggle source
# File lib/focus/action.rb, line 54
def seconds_focused
  Time.now.to_i - context.focus_start
end