terjira 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 046f6b4a0d275e738467f4943cad18704099fd46
4
- data.tar.gz: edc47213f38ef1f61a3f821d267fb8685e720b50
3
+ metadata.gz: f11a8a9fa0c0931b13e265d38d66666ea03a650c
4
+ data.tar.gz: e6efe989e6b5675eca1d6a90172c65ceeb45962e
5
5
  SHA512:
6
- metadata.gz: 897effd0059c257a5c1dc3395e560952f2d57be60030c3386f7f88812e8b11d8a010069b2d1988497e2a04d8f869ae37fabc2acfd0bd482393b85b6c084039d4
7
- data.tar.gz: 94b7ccc46b256f99dffcb52b54bbbf7a5db57ef76942e7faca6edd09e8e7d1175ed0bddacbadf076971436baebec343a96976aa328c8e3428904358814885f65
6
+ metadata.gz: 5f89121e0d5ac1ad6c38d665aa365a24c2804a9edd809cfda43bdf6d8b9911cf477fb403fc87b57cebf79b57ecd9131c1b7a12136f650e8c90f98d1b37a752b8
7
+ data.tar.gz: 38da5187eb7c15064293049120340d2f6c74702e70ab41c05f1eca7f7074a938a57e9d45ba1c6c0413458043ec4a71101dc851814942b25ad447310f1329e9d3
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- terjira (0.3.9)
4
+ terjira (0.4.1)
5
5
  activesupport (= 4.1.11)
6
6
  jira-ruby (= 1.5.0)
7
7
  thor (~> 0.19.0)
@@ -25,7 +25,7 @@ GEM
25
25
  diff-lcs (1.3)
26
26
  docile (1.1.5)
27
27
  equatable (0.5.0)
28
- i18n (0.9.1)
28
+ i18n (0.9.5)
29
29
  concurrent-ruby (~> 1.0)
30
30
  jira-ruby (1.5.0)
31
31
  activesupport
@@ -33,7 +33,7 @@ GEM
33
33
  oauth (~> 0.5, >= 0.5.0)
34
34
  json (1.8.6)
35
35
  method_source (0.8.2)
36
- minitest (5.10.3)
36
+ minitest (5.11.3)
37
37
  multipart-post (2.0.0)
38
38
  necromancer (0.4.0)
39
39
  oauth (0.5.4)
@@ -82,7 +82,7 @@ GEM
82
82
  tty-screen (~> 0.5.0)
83
83
  unicode-display_width (~> 1.1.0)
84
84
  verse (~> 0.5.0)
85
- tzinfo (1.2.4)
85
+ tzinfo (1.2.5)
86
86
  thread_safe (~> 0.1)
87
87
  unicode-display_width (1.1.3)
88
88
  unicode_utils (1.4.0)
@@ -104,4 +104,4 @@ DEPENDENCIES
104
104
  terjira!
105
105
 
106
106
  BUNDLED WITH
107
- 1.15.4
107
+ 1.16.1
data/README.md CHANGED
@@ -72,6 +72,8 @@ Issue:
72
72
  jira issue attach_file [ISSUE_KEY] ([FILE_PATH]) #Attach a file to issue
73
73
  jira issue comment [ISSUE_KEY] # Write comment on the issue
74
74
  # pass `-E` or `--editor` to open system default editor for composing comment
75
+ jira issue edit_comment [ISSUE_KEY] ([COMMENT_ID]) # Edit user's comment on the issue.
76
+ # If COMMENT_ID is not given, it will choose user's last comment.
75
77
  jira issue delete [ISSUE_KEY] # Delete the issue
76
78
  jira issue edit [ISSUE_KEY] # Edit the issue
77
79
  # pass `-E` or `--editor` to open system default editor for composing issue description
@@ -47,6 +47,11 @@ module Terjira
47
47
  find(issue)
48
48
  end
49
49
 
50
+ def edit_comment(issue, comment_id, message)
51
+ api_put("issue/#{issue.key_value}/comment/#{comment_id}", { body: message }.to_json)
52
+ find(issue)
53
+ end
54
+
50
55
  def create(options = {})
51
56
  params = extract_to_fields_params(options)
52
57
  resp = api_post 'issue', params.to_json
@@ -94,6 +94,31 @@ module Terjira
94
94
  render_issue_detail(issue)
95
95
  end
96
96
 
97
+ desc 'edit_comment [ISSUE_KEY] ([COMMENT_ID])',
98
+ "Edit user's comment on the issue.
99
+ If COMMENT_ID is not given, it will choose user's last comment"
100
+ jira_options :comment_id, :editable_comment
101
+ def edit_comment(issue, comment_id = '')
102
+ opts = suggest_options(
103
+ resources: { issue: issue, comment_id: comment_id },
104
+ required: [:editable_comment]
105
+ )
106
+
107
+ if opts['editable_comment'].present?
108
+ selected_comment = opts['editable_comment']['selected_comment']
109
+ new_content = opts['editable_comment']['new_content']
110
+
111
+ issue = client_class.edit_comment(
112
+ issue,
113
+ selected_comment.id,
114
+ new_content
115
+ )
116
+ render_issue_detail(issue)
117
+ else
118
+ render("You don't have any editable comment.")
119
+ end
120
+ end
121
+
97
122
  desc 'attach_file [ISSUE_KEY] [FILE]', 'Attach a file to the issue'
98
123
  jira_options :file
99
124
  def attach_file(issue, file)
@@ -2,13 +2,15 @@
2
2
 
3
3
  module Terjira
4
4
  class Editor
5
- def self.editor_text
5
+ def self.editor_text(content = '')
6
6
  editor = ENV['EDITOR']
7
7
  if editor.nil? || editor.empty?
8
8
  raise 'EDITOR environment variable not found. Please set a default editor.'
9
9
  end
10
10
 
11
11
  tmp_file = Tempfile.new('content')
12
+ tmp_file.write(content)
13
+ tmp_file.close
12
14
  success = system "#{editor} #{tmp_file.path}"
13
15
  content = File.read(tmp_file.path) if success
14
16
 
@@ -19,9 +19,12 @@ module Terjira
19
19
  def select_project
20
20
  fetch :project do
21
21
  projects = fetch(:projects) { Client::Project.all }
22
- option_select_prompt.select('Choose project?', per_page: per_page(projects)) do |menu|
23
- projects.each { |project| menu.choice project_choice_title(project), project }
24
- end
22
+ selected_project =
23
+ option_select_prompt.select('Choose project?', per_page: per_page(projects)) do |menu|
24
+ projects.each { |project| menu.choice project_choice_title(project), project }
25
+ end
26
+
27
+ Client::Project.find(selected_project.id)
25
28
  end
26
29
  end
27
30
 
@@ -150,6 +153,18 @@ module Terjira
150
153
  end
151
154
  end
152
155
 
156
+ def update_comment
157
+ fetch(:editable_comment) do
158
+ selected_comment = user_comment
159
+
160
+ if selected_comment.present?
161
+ new_content = Editor.editor_text(selected_comment.body)
162
+
163
+ { 'selected_comment' => selected_comment, 'new_content' => new_content }
164
+ end
165
+ end
166
+ end
167
+
153
168
  def write_description
154
169
  fetch(:description) do
155
170
  if with_editor?
@@ -170,6 +185,31 @@ module Terjira
170
185
 
171
186
  private
172
187
 
188
+ def user_comment
189
+ comment_id = get(:comment_id)
190
+
191
+ if comment_id.present?
192
+ user_comments.detect do |c|
193
+ c.id == comment_id && c.author['name'] == current_username
194
+ end
195
+ else
196
+ user_comments.reverse.detect do |c|
197
+ c.author['name'] == current_username
198
+ end
199
+ end
200
+ end
201
+
202
+ def user_comments
203
+ issue = Client::Issue.find(get(:issue))
204
+
205
+ unless issue.comments.empty?
206
+ issue
207
+ .comments
208
+ .reverse
209
+ .select { |c| c.author['name'] == current_username }
210
+ end || []
211
+ end
212
+
173
213
  def prompt_multiline(prompt_for)
174
214
  result = option_prompt.multiline("#{prompt_for}?")
175
215
  result.join("") if result
@@ -24,7 +24,8 @@ module Terjira
24
24
  priority: :select_priority,
25
25
  resolution: :select_resolution,
26
26
  epiclink: :write_epiclink_key,
27
- comment: :write_comment
27
+ comment: :write_comment,
28
+ editable_comment: :update_comment
28
29
  }.freeze
29
30
 
30
31
  # Transforming and clening options
@@ -122,8 +122,13 @@ module Terjira
122
122
  <%= pastel.dim('- ' + remain_comments.size.to_s + ' previous comments exist -') %>
123
123
  <% end -%>
124
124
  <% visiable_comments.each do |comment| -%>
125
+
126
+ <% id = comment.id -%>
127
+ <% author = comment.author['displayName'] -%>
128
+ <% created_at = formatted_date(comment.created) -%>
129
+
125
130
  <%= comment.body %>
126
- - <%= comment.author['displayName'] %> <%= formatted_date(comment.created) %>
131
+ - (ID: <%= id %>) <%= author %> <%= created_at %>
127
132
  <% end -%>
128
133
  """
129
134
  end
@@ -1,7 +1,7 @@
1
1
  require 'terjira/utils/file_cache'
2
2
 
3
3
  module Terjira
4
- VERSION = '0.4.0'.freeze
4
+ VERSION = '0.4.1'.freeze
5
5
 
6
6
  class VersionChecker
7
7
  VERSION_CHECK_DURATION = (60 * 60 * 24 * 5).freeze
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: terjira
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jaehyun Shin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-15 00:00:00.000000000 Z
11
+ date: 2018-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor