terjira 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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