pt 0.5.4 → 0.5.5
Sign up to get free protection for your applications and to get access to all the features.
- data/Changelog.md +4 -0
- data/lib/pt.rb +1 -1
- data/lib/pt/data_table.rb +2 -2
- data/lib/pt/ui.rb +31 -30
- metadata +31 -11
data/Changelog.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# pt changelog
|
2
2
|
|
3
|
+
## v0.5.5
|
4
|
+
|
5
|
+
Show the id of tickes by default in tables, adds the url of the task to show and shows more information about attachments ( derwiki )
|
6
|
+
|
3
7
|
## v0.5.4
|
4
8
|
|
5
9
|
Fix to pt create, wherein skipping optional parameters wouldn't work as expected, or at all. ( aniccolai )
|
data/lib/pt.rb
CHANGED
data/lib/pt/data_table.rb
CHANGED
data/lib/pt/ui.rb
CHANGED
@@ -42,7 +42,7 @@ class PT::UI
|
|
42
42
|
else
|
43
43
|
members = @client.get_members(@project)
|
44
44
|
table = PT::MembersTable.new(members)
|
45
|
-
user = select("Please select a member to see his tasks", table).name
|
45
|
+
user = select("Please select a member to see his tasks.", table).name
|
46
46
|
title("Work for #{user} in #{project_to_s}")
|
47
47
|
stories = @client.get_my_work(@project, user)
|
48
48
|
PT::TasksTable.new(stories).print
|
@@ -64,7 +64,7 @@ class PT::UI
|
|
64
64
|
if ask('Do you want to assign it now? (y/n)').downcase == 'y'
|
65
65
|
members = @client.get_members(@project)
|
66
66
|
table = PT::MembersTable.new(members)
|
67
|
-
owner = select("Please select a member to assign him the task", table).name
|
67
|
+
owner = select("Please select a member to assign him the task.", table).name
|
68
68
|
else
|
69
69
|
owner = nil
|
70
70
|
end
|
@@ -80,11 +80,11 @@ class PT::UI
|
|
80
80
|
else
|
81
81
|
'feature'
|
82
82
|
end
|
83
|
-
result = @client.create_task(@project, name, owner
|
83
|
+
result = @client.create_task(@project, name, owner, requester, task_type)
|
84
84
|
if result.errors.any?
|
85
85
|
error(result.errors.errors)
|
86
86
|
else
|
87
|
-
congrats("#{task_type} for #{owner
|
87
|
+
congrats("#{task_type} for #{owner} created: #{result.url}")
|
88
88
|
end
|
89
89
|
end
|
90
90
|
|
@@ -267,7 +267,7 @@ class PT::UI
|
|
267
267
|
if @params[1]
|
268
268
|
comment = @params[1]
|
269
269
|
else
|
270
|
-
comment = ask("Please explain why are you rejecting the task")
|
270
|
+
comment = ask("Please explain why are you rejecting the task.")
|
271
271
|
end
|
272
272
|
|
273
273
|
if @client.comment_task(@project, task, comment)
|
@@ -383,36 +383,36 @@ class PT::UI
|
|
383
383
|
|
384
384
|
|
385
385
|
def help
|
386
|
-
if ARGV[0]
|
386
|
+
if ARGV[0] && ARGV[0] != 'help'
|
387
387
|
message("Command #{ARGV[0]} not recognized. Showing help.")
|
388
388
|
end
|
389
389
|
|
390
390
|
title("Command line usage")
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
391
|
+
puts("pt # show all available tasks")
|
392
|
+
puts("pt todo # show all unscheduled tasks")
|
393
|
+
puts("pt create [title] ~[owner] ~[type] # create a new task")
|
394
|
+
puts("pt show [id] # shows detailed info about a task")
|
395
|
+
puts("pt open [id] # open a task in the browser")
|
396
|
+
puts("pt assign [id] [member] # assign owner")
|
397
|
+
puts("pt comment [id] [comment] # add a comment")
|
398
|
+
puts("pt estimate [id] [0-3] # estimate a task in points scale")
|
399
|
+
puts("pt start [id] # mark a task as started")
|
400
|
+
puts("pt finish [id] # indicate you've finished a task")
|
401
|
+
puts("pt deliver [id] # indicate the task is delivered");
|
402
|
+
puts("pt accept [id] # mark a task as accepted")
|
403
|
+
puts("pt reject [id] [reason] # mark a task as rejected, explaining why")
|
404
|
+
puts("pt find [query] # looks in your tasks by title and presents it")
|
405
|
+
puts("pt done [id] ~[0-3] ~[comment] # lazy mans finish task, does everything")
|
406
|
+
puts("pt list [member] # list all tasks for another pt user")
|
407
|
+
puts("pt updates [number] # shows number recent activity from your current project")
|
408
|
+
puts("")
|
409
|
+
puts("All commands can be ran without arguments for a wizard like UI.")
|
410
410
|
end
|
411
411
|
|
412
412
|
protected
|
413
413
|
|
414
414
|
def commands
|
415
|
-
(public_methods - Object.public_methods).sort.map{ |c| c.to_sym}
|
415
|
+
(public_methods - Object.public_methods + [:help]).sort.map{ |c| c.to_sym}
|
416
416
|
end
|
417
417
|
|
418
418
|
# Config
|
@@ -420,7 +420,7 @@ class PT::UI
|
|
420
420
|
def load_global_config
|
421
421
|
config = YAML.load(File.read(GLOBAL_CONFIG_PATH)) rescue {}
|
422
422
|
if config.empty?
|
423
|
-
message "I can't find info about your Pivotal Tracker account in #{GLOBAL_CONFIG_PATH}"
|
423
|
+
message "I can't find info about your Pivotal Tracker account in #{GLOBAL_CONFIG_PATH}."
|
424
424
|
while !config[:api_number] do
|
425
425
|
config[:email] = ask "What is your email?"
|
426
426
|
password = ask_secret "And your password? (won't be displayed on screen)"
|
@@ -432,7 +432,7 @@ class PT::UI
|
|
432
432
|
end
|
433
433
|
congrats "Thanks!",
|
434
434
|
"Your API id is " + config[:api_number],
|
435
|
-
"I'm saving it in #{GLOBAL_CONFIG_PATH}
|
435
|
+
"I'm saving it in #{GLOBAL_CONFIG_PATH} so you don't have to log in again."
|
436
436
|
save_config(config, GLOBAL_CONFIG_PATH)
|
437
437
|
end
|
438
438
|
config
|
@@ -571,10 +571,11 @@ class PT::UI
|
|
571
571
|
title task.name
|
572
572
|
estimation = [-1, nil].include?(task.estimate) ? "Unestimated" : "#{task.estimate} points"
|
573
573
|
message "#{task.current_state.capitalize} #{task.story_type} | #{estimation} | Req: #{task.requested_by} | Owns: #{task.owned_by} | Id: #{task.id}"
|
574
|
-
message task.description unless task.description.empty?
|
574
|
+
message task.description unless task.description.nil? || task.description.empty?
|
575
575
|
task.tasks.all.each{ |t| message "- #{t.complete ? "(done) " : "(pend)"} #{t.description}" }
|
576
576
|
task.notes.all.each{ |n| message "#{n.author}: \"#{n.text}\"" }
|
577
|
-
task.attachments.each{ |a| message "#{a.uploaded_by} uploaded: \"#{a.description.empty? ? "#{a.filename}" : "#{a.description} (#{a.filename})" }\" #{a.url}" }
|
577
|
+
task.attachments.each{ |a| message "#{a.uploaded_by} uploaded: \"#{a.description && a.description.empty? ? "#{a.filename}" : "#{a.description} (#{a.filename})" }\" #{a.url}" }
|
578
|
+
puts task.url
|
578
579
|
end
|
579
580
|
|
580
581
|
def show_activity(activity, tasks)
|
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.5.
|
4
|
+
version: 0.5.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-08-01 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: pivotal-tracker
|
17
|
-
requirement:
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,15 @@ dependencies:
|
|
22
22
|
version: 0.4.1
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements:
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ! '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: 0.4.1
|
26
31
|
- !ruby/object:Gem::Dependency
|
27
32
|
name: hirb
|
28
|
-
requirement:
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
29
34
|
none: false
|
30
35
|
requirements:
|
31
36
|
- - ! '>='
|
@@ -33,10 +38,15 @@ dependencies:
|
|
33
38
|
version: 0.4.5
|
34
39
|
type: :runtime
|
35
40
|
prerelease: false
|
36
|
-
version_requirements:
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 0.4.5
|
37
47
|
- !ruby/object:Gem::Dependency
|
38
48
|
name: colored
|
39
|
-
requirement:
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
40
50
|
none: false
|
41
51
|
requirements:
|
42
52
|
- - ! '>='
|
@@ -44,10 +54,15 @@ dependencies:
|
|
44
54
|
version: '1.2'
|
45
55
|
type: :runtime
|
46
56
|
prerelease: false
|
47
|
-
version_requirements:
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '1.2'
|
48
63
|
- !ruby/object:Gem::Dependency
|
49
64
|
name: highline
|
50
|
-
requirement:
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
51
66
|
none: false
|
52
67
|
requirements:
|
53
68
|
- - ! '>='
|
@@ -55,7 +70,12 @@ dependencies:
|
|
55
70
|
version: 1.6.1
|
56
71
|
type: :runtime
|
57
72
|
prerelease: false
|
58
|
-
version_requirements:
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: 1.6.1
|
59
79
|
description: Minimalist, opinionated client to manage your Pivotal Tracker tasks from
|
60
80
|
the command line.
|
61
81
|
email:
|
@@ -98,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
98
118
|
version: '0'
|
99
119
|
requirements: []
|
100
120
|
rubyforge_project: pt
|
101
|
-
rubygems_version: 1.8.
|
121
|
+
rubygems_version: 1.8.24
|
102
122
|
signing_key:
|
103
123
|
specification_version: 3
|
104
124
|
summary: Client to use Pivotal Tracker from the console.
|