class Durt::ProjectController
Attributes
project[R]
Public Class Methods
new(project)
click to toggle source
# File lib/durt/project_controller.rb, line 10 def initialize(project) @project = project end
Public Instance Methods
current_issue()
click to toggle source
# File lib/durt/project_controller.rb, line 14 def current_issue project.active_issue end
edit_estimate(issue)
click to toggle source
# File lib/durt/ebs_plugin.rb, line 64 def edit_estimate(issue) EbsPlugin.new(issue.project).edit_estimate(issue) end
enter_issue(issue)
click to toggle source
# File lib/durt/project_controller.rb, line 68 def enter_issue(issue) project.tap do |p| plugins = p.plugins plugins.each do |plugin| plugin.before_enter(issue) end plugins.each do |plugin| plugin.enter(issue) end end end
filter()
click to toggle source
# File lib/durt/project_controller.rb, line 36 def filter project.tap do |p| p.plugins.each do |plugin| plugin.filter(nil) end end end
new_issue()
click to toggle source
# File lib/durt/project_controller.rb, line 82 def new_issue plugin = select_source(project) issue_name = prompt.ask('Enter issue name:') issue_data = { # Key should probably be ref_id and not be required key: SecureRandom.uuid, summary: issue_name, project: project, source: plugin.source_name } Durt::Issue.create(issue_data) end
push_issue(issue)
click to toggle source
# File lib/durt/project_controller.rb, line 98 def push_issue(issue) plugin = issue.plugin ref_id = plugin.push_issue(issue) issue.update(key: ref_id) end
select_issue(issue = nil)
click to toggle source
# File lib/durt/project_controller.rb, line 18 def select_issue(issue = nil) issue ||= begin plugin = select_source(project) raise "No plugin selected" unless plugin.present? issues = plugin.issues raise "No issue available to select" unless issues.present? prompt.select("Select issue: ", issues.to_choice_h) end project.issues.update_all(active: false) issue.tap(&:active!) end
start_issue(issue)
click to toggle source
# File lib/durt/project_controller.rb, line 44 def start_issue(issue) issue.tap do |i| plugins = project.time_tracker_plugins plugins.each do |plugin| plugin.start(i) end end issue.start_tracking! end
stop_issue(issue)
click to toggle source
# File lib/durt/project_controller.rb, line 56 def stop_issue(issue) issue.tap do |i| plugins = project.time_tracker_plugins plugins.each do |plugin| plugin.stop(i) end end issue.stop_tracking! end
sync_issues()
click to toggle source
# File lib/durt/project_controller.rb, line 106 def sync_issues project.tap do |p| plugin = select_source(p, include_local: false) fetched = plugin.fetch_issues fetched.map do |attrs| Durt::Issue.find_or_create_by(key: attrs[:key]) do |issue| issue.attributes = attrs end end end end
Private Instance Methods
bug_tracker_choices_for(project, include_local = true)
click to toggle source
# File lib/durt/project_controller.rb, line 122 def bug_tracker_choices_for(project, include_local = true) choice_plugins = project.bug_tracker_plugins choice_plugins = choice_plugins.reject { |p| p.plugin_name == 'Local' } unless include_local choice_plugins.map { |p| [p.plugin_name, p] }.to_h end
prompt()
click to toggle source
# File lib/durt/project_controller.rb, line 137 def prompt @prompt ||= TTY::Prompt.new end
select_source(project, include_local: true)
click to toggle source
# File lib/durt/project_controller.rb, line 129 def select_source(project, include_local: true) choices = bug_tracker_choices_for(project, include_local) return choices.values.first if choices.count == 1 prompt.select('Select source', choices) end