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



140
141
142
143
144
# File 'lib/climine/command/issue.rb', line 140

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



147
148
149
# File 'lib/climine/command/issue.rb', line 147

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

#notes(id = nil, notes = nil) ⇒ Object



109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/climine/command/issue.rb', line 109

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

  if notes 
    options[:notes] = notes
  elsif !options[:notes]
    options[:notes] = ask_notes
  end

  if options[:user_id]
    options[:assigned_to_id] = options.delete(:user_id)
  end

  redmine.update_issue id, options

  render :issue, redmine.issue(id, { include: [:journals] })
end

#reject(id = nil) ⇒ Object



152
153
154
155
156
# File 'lib/climine/command/issue.rb', line 152

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



130
131
132
133
134
135
136
137
# File 'lib/climine/command/issue.rb', line 130

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



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

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