Class: Climine::Command::Issue

Inherits:
Base
  • Object
show all
Defined in:
lib/climine/command/issue.rb

Instance Method Summary collapse

Instance Method Details

#close(id = nil) ⇒ Object



116
117
118
119
120
# File 'lib/climine/command/issue.rb', line 116

def close(id=nil)
  say("required ticket number!", :red) and return unless id
  redmine.update_issue id, {status_id: 5}
  render :issue, redmine.issue(id)
end

#finish(id = nil) ⇒ Object



123
124
125
# File 'lib/climine/command/issue.rb', line 123

def finish(id=nil)
  close(id)
end

#get(id = nil) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/climine/command/issue.rb', line 25

def get(id=nil)
  say("required ticket number!", :red) unless id
  template = options.delete "template"

  redmine_params = {include: []}

  if options.delete "journals"
    redmine_params[:include] << :journals
  end
    
  render (template || :issue), redmine.issue(id, redmine_params)
end

#listObject



18
19
20
# File 'lib/climine/command/issue.rb', line 18

def list
  render (options["template"] || :issues), redmine.issues(before_weeek_to_update_date(options.to_hash))
end

#newObject



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/climine/command/issue.rb', line 45

def new
  # project
  unless project_id = options["project"]
    projects = sort_by_id redmine.projects.projects
    projects.each{|project| puts "#{project.id} : #{project.name}" }
    project_id = ask("Which project?", limited_to: projects.map{|project| project.id.to_s})
  end
   
  # tracker
  unless tracker_id = options["tracker"]
    trackers = sort_by_id redmine.trackers.trackers
    trackers.each{|tracker| puts "#{tracker.id} : #{tracker.name}" }
    tracker_id = ask("Which tracker?", limited_to: trackers.map{|tracker| tracker.id.to_s})
  end
   
  # status
  unless status_id = options["status"]
    statuses = sort_by_id redmine.statuses.issue_statuses
    statuses.each{|status| puts "#{status.id} : #{status.name}" }
    status_id = ask("Which status? (empty is default)")
  end
   
  # assigned user
  unless user_id = options["user"]
    members = sort_by_id redmine.members(project_id).memberships
    members.each{|member| puts "#{member.user.id} : #{member.user.name}"}
    user_id = ask("Who do you assigned?")
  end
   
  res = redmine.create_issue(
    project_id: project_id,
    tracker_id: tracker_id,
    status_id: status_id,
    assigned_to_id: user_id,
    subject: ask_not_empty("subject > ").force_encoding('utf-8'),
    description: ask_description
  )
   
  unless res.error
    render :issue, res
  else
    say "Error! (Issue was not created)", :red
  end
end

#reject(id = nil) ⇒ Object



128
129
130
131
132
# File 'lib/climine/command/issue.rb', line 128

def reject(id=nil)
  say("required ticket number!", :red) and return unless id
  redmine.update_issue id, {status_id: 6}
  render :issue, redmine.issue(id)
end

#start(id = nil) ⇒ Object



106
107
108
109
110
111
112
113
# File 'lib/climine/command/issue.rb', line 106

def start(id=nil)
  say("required ticket number!", :red) and return unless id

  options[:assigned_to_id] = options.delete(:user_id) if options[:user_id]
  redmine.update_issue id, options.merge({status_id: 2}) # id:2 is close

  render :issue, redmine.issue(id)
end

#update(id = nil) ⇒ Object



94
95
96
97
98
99
100
101
# File 'lib/climine/command/issue.rb', line 94

def update(id=nil)
  say("required ticket number!", :red) and return unless id

  options[:assigned_to_id] = options.delete(:user_id) if options[:user_id]
  redmine.update_issue id, options

  render :issue, redmine.issue(id)
end