pt 0.9.0 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Changelog.md +2 -1
- data/lib/pt/cli.rb +16 -22
- data/lib/pt/client.rb +16 -3
- data/lib/pt/helper.rb +27 -38
- data/lib/pt/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0c8f668fcc562a3434ef7c4254e2d00d1598c49a
|
4
|
+
data.tar.gz: 7f022d8b46d4e628af5d0aee958368d5196c0497
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9126e08e452d2e25573a2a5ed5bb91d42ec6dfa2d3c7af3095a56aec121d9c4cf75cbeb82325ab27fc86a4b755b5ec5cdfa30129629b6ad5384ba35a16ee5c2
|
7
|
+
data.tar.gz: e2a021d5eb32c5bd49d2aef9fe46808ddf6f151fbcd80d43daaaa900f704aee476fd99c8f347f5863a2cf2ce84e23ab6c0feb0f29b1fd85ec062e0d573629fdd
|
data/Changelog.md
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
# pt changelog
|
2
2
|
|
3
|
+
## v0.10.0
|
4
|
+
- remove interactive pagination, pagination option can be set through cli flag ( --page and --limit )
|
3
5
|
## v0.9.0
|
4
6
|
- add pagination for long stories (limit: default is 20, can be changed by set :limit: on local .pt file)
|
5
|
-
-
|
6
7
|
|
7
8
|
## v0.8.6
|
8
9
|
- replace ruby save navigation operator
|
data/lib/pt/cli.rb
CHANGED
@@ -10,6 +10,9 @@ module PT
|
|
10
10
|
include PT::Helper
|
11
11
|
attr_reader :project
|
12
12
|
|
13
|
+
class_option "limit", aliases: :l, type: :numeric, default: 10, desc: 'change limit'
|
14
|
+
class_option "page", aliases: :p, type: :numeric, desc: 'show n-th page'
|
15
|
+
|
13
16
|
def initialize(*args)
|
14
17
|
super
|
15
18
|
@io = HighLine.new
|
@@ -24,15 +27,14 @@ module PT
|
|
24
27
|
define_method(state.to_sym) do |owner = nil|
|
25
28
|
filter = "state:#{state}"
|
26
29
|
filter << " owner:#{owner}" if owner
|
27
|
-
|
28
|
-
|
29
|
-
end
|
30
|
-
show_story(story)
|
30
|
+
stories = @client.get_stories(filter: filter, page: options[:page], limit: options[:limit])
|
31
|
+
print_stories_table(stories)
|
31
32
|
end
|
32
33
|
end
|
33
34
|
|
34
35
|
%w[show tasks open assign comments label estimate start finish deliver accept reject done].each do |action|
|
35
36
|
desc "#{action} [id]", "#{action} story"
|
37
|
+
method_option "interactive", aliases: :i, type: :boolean, default: true, desc: 'enable interactive method'
|
36
38
|
define_method(action.to_sym) do |story_id = nil|
|
37
39
|
if story_id
|
38
40
|
story = task_by_id_or_pt_id(story_id.to_i)
|
@@ -42,13 +44,12 @@ module PT
|
|
42
44
|
end
|
43
45
|
else
|
44
46
|
method_name = "get_stories_to_#{action}"
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
@client.get_stories(page: page)
|
50
|
-
end
|
47
|
+
stories = if @client.respond_to?(method_name.to_sym)
|
48
|
+
@client.send("get_stories_to_#{action}", page: options[:page], limit: options[:limit])
|
49
|
+
else
|
50
|
+
@client.get_stories(page: options[:page], limit: options[:limit])
|
51
51
|
end
|
52
|
+
story = select_story_from_paginated_table(stories)
|
52
53
|
end
|
53
54
|
title("#{action} '#{story.name}'")
|
54
55
|
send("#{action}_story", story)
|
@@ -57,10 +58,8 @@ module PT
|
|
57
58
|
|
58
59
|
desc 'mywork', 'list all your stories'
|
59
60
|
def mywork
|
60
|
-
|
61
|
-
|
62
|
-
end
|
63
|
-
show_story(story)
|
61
|
+
stories = @client.get_stories(filter: "owner:#{@local_config[:user_name]} -state:accepted", page: options[:page])
|
62
|
+
print_stories_table(stories)
|
64
63
|
end
|
65
64
|
|
66
65
|
desc "list [owner]", "list all stories from owner"
|
@@ -68,10 +67,8 @@ module PT
|
|
68
67
|
if owner
|
69
68
|
if owner == "all"
|
70
69
|
stories = @client.get_work
|
71
|
-
TasksTable.new(stories).print @global_config
|
72
70
|
else
|
73
71
|
stories = @client.get_my_work(owner)
|
74
|
-
TasksTable.new(stories).print @global_config
|
75
72
|
end
|
76
73
|
else
|
77
74
|
members = @client.get_members
|
@@ -79,8 +76,8 @@ module PT
|
|
79
76
|
user = select("Please select a member to see his tasks.", table).name
|
80
77
|
title("Work for #{user} in #{project_to_s}")
|
81
78
|
stories = @client.get_my_work(user)
|
82
|
-
TasksTable.new(stories).print @global_config
|
83
79
|
end
|
80
|
+
print_stories_table(stories)
|
84
81
|
end
|
85
82
|
|
86
83
|
desc "recent", "show stories you've recently shown or commented on with pt"
|
@@ -128,7 +125,6 @@ module PT
|
|
128
125
|
else
|
129
126
|
owner = nil
|
130
127
|
end
|
131
|
-
requester = @local_config[:user_name]
|
132
128
|
type = ask('Type? (c)hore, (b)ug, anything else for feature)')
|
133
129
|
end
|
134
130
|
|
@@ -164,10 +160,8 @@ module PT
|
|
164
160
|
|
165
161
|
desc "find [query] " ,"looks in your stories by title and presents it"
|
166
162
|
def find(query)
|
167
|
-
|
168
|
-
|
169
|
-
end
|
170
|
-
show_story(story)
|
163
|
+
stories = @client.get_stories(filter: query, page: options[:page])
|
164
|
+
print_stories_table(stories)
|
171
165
|
end
|
172
166
|
|
173
167
|
desc "updates","shows number recent activity from your current project"
|
data/lib/pt/client.rb
CHANGED
@@ -21,6 +21,19 @@ module PT
|
|
21
21
|
@project = @client.project(local_config[:project_id]) if local_config
|
22
22
|
end
|
23
23
|
|
24
|
+
def total_page(limit=nil)
|
25
|
+
limit ||= @config[:limit]
|
26
|
+
@total_record = @client.last_response.env.response_headers["X-Tracker-Pagination-Total"]
|
27
|
+
@total_record ? (@total_record.to_f/limit).ceil : 1
|
28
|
+
end
|
29
|
+
|
30
|
+
def current_page(limit=nil)
|
31
|
+
limit ||= @config[:limit]
|
32
|
+
offset = @client.last_response.env.response_headers["X-Tracker-Pagination-Offset"]
|
33
|
+
offset ? ((offset.to_f/limit)+1).to_i.ceil : 1
|
34
|
+
end
|
35
|
+
|
36
|
+
|
24
37
|
def get_project(project_id)
|
25
38
|
project = @client.project(project_id)
|
26
39
|
project
|
@@ -106,9 +119,9 @@ module PT
|
|
106
119
|
end
|
107
120
|
|
108
121
|
def get_stories(params={})
|
109
|
-
limit = config[:limit] ||
|
110
|
-
page = params[:page] ||
|
111
|
-
offset = page*limit
|
122
|
+
limit = params[:limit] || config[:limit] || 10
|
123
|
+
page = params[:page] || 1
|
124
|
+
offset = (page-1)*limit
|
112
125
|
filter = params[:filter] || '-state=accepted'
|
113
126
|
project.stories limit: limit, fields: STORY_FIELDS, auto_paginate: false, offset: offset, filter: filter
|
114
127
|
end
|
data/lib/pt/helper.rb
CHANGED
@@ -112,30 +112,6 @@ module PT
|
|
112
112
|
puts "\n#{split_lines(msg).red.bold}"
|
113
113
|
end
|
114
114
|
|
115
|
-
def select(msg, table)
|
116
|
-
if table.length > 0
|
117
|
-
begin
|
118
|
-
table.print @global_config
|
119
|
-
row = ask "#{msg} (1-#{table.length}, 'n' to fetch next data, 'p' to fetch previous data, 'q' to exit)"
|
120
|
-
case row
|
121
|
-
when 'q'
|
122
|
-
quit
|
123
|
-
when 'n'
|
124
|
-
return 'n'
|
125
|
-
when 'p'
|
126
|
-
return 'p'
|
127
|
-
end
|
128
|
-
selected = table[row]
|
129
|
-
error "Invalid selection, try again:" unless selected
|
130
|
-
end until selected
|
131
|
-
selected
|
132
|
-
else
|
133
|
-
table.print @global_config
|
134
|
-
message "Sorry, there are no options to select."
|
135
|
-
quit
|
136
|
-
end
|
137
|
-
end
|
138
|
-
|
139
115
|
def quit
|
140
116
|
message "bye!"
|
141
117
|
exit
|
@@ -251,20 +227,33 @@ module PT
|
|
251
227
|
save_config( @local_config, get_local_config_path() )
|
252
228
|
end
|
253
229
|
|
254
|
-
def
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
230
|
+
def select(msg, table)
|
231
|
+
if table.length > 0
|
232
|
+
begin
|
233
|
+
table.print @global_config
|
234
|
+
row = ask "#{msg} (1-#{table.length}, 'q' to exit)"
|
235
|
+
quit if row == 'q'
|
236
|
+
selected = table[row]
|
237
|
+
error "Invalid selection, try again:" unless selected
|
238
|
+
end until selected
|
239
|
+
selected
|
240
|
+
else
|
241
|
+
table.print @global_config
|
242
|
+
message "Sorry, there are no options to select."
|
243
|
+
quit
|
244
|
+
end
|
245
|
+
end
|
246
|
+
|
247
|
+
def print_stories_table(stories)
|
248
|
+
table = TasksTable.new(stories)
|
249
|
+
puts "[#{@client.current_page(options[:limit])}/#{@client.total_page(options[:limit])}]"
|
250
|
+
table.print @global_config
|
251
|
+
end
|
252
|
+
|
253
|
+
def select_story_from_paginated_table(stories)
|
254
|
+
puts "[#{@client.current_page(options[:limit])}/#{@client.total_page(options[:limit])}]"
|
255
|
+
table = TasksTable.new(stories)
|
256
|
+
select("Please select a story", table)
|
268
257
|
end
|
269
258
|
end
|
270
259
|
end
|
data/lib/pt/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Slamet Kristanto
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2017-02-
|
14
|
+
date: 2017-02-18 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: bundler
|