pt 0.5.4 → 0.5.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/Changelog.md +4 -0
  2. data/lib/pt.rb +1 -1
  3. data/lib/pt/data_table.rb +2 -2
  4. data/lib/pt/ui.rb +31 -30
  5. 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
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
 
3
3
  module PT
4
4
  class InputError < StandardError; end
5
- VERSION = '0.5.4'
5
+ VERSION = '0.5.5'
6
6
  end
7
7
 
8
8
  require 'pt/client'
data/lib/pt/data_table.rb CHANGED
@@ -46,7 +46,7 @@ module PT
46
46
  class TasksTable < DataTable
47
47
 
48
48
  def self.fields
49
- [:name, :current_state]
49
+ [:name, :current_state, :id]
50
50
  end
51
51
 
52
52
  end
@@ -59,4 +59,4 @@ module PT
59
59
 
60
60
  end
61
61
 
62
- end
62
+ end
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.name, requester, task_type)
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.name} created, cool.")
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
- message("pt # show all available tasks")
392
- message("pt todo # show all unscheduled tasks")
393
- message("pt create [title] ~[owner] ~[type] # create a new task")
394
- message("pt show [id] # shows detailed info about a task")
395
- message("pt open [id] # open a task in the browser")
396
- message("pt assign [id] [member] # assign owner")
397
- message("pt comment [id] [comment] # add a comment")
398
- message("pt estimate [id] [0-3] # estimate a task in points scale")
399
- message("pt start [id] # mark a task as started")
400
- message("pt finish [id] # indicate you've finished a task")
401
- message("pt deliver [id] # indicate the task is delivered");
402
- message("pt accept [id] # mark a task as accepted")
403
- message("pt reject [id] [reason] # mark a task as rejected, explaining why")
404
- message("pt find [query] # looks in your tasks by title and presents it")
405
- message("pt done [id] ~[0-3] ~[comment] # lazy mans finish task, does everything")
406
- message("pt list [member] # list all tasks for another pt user")
407
- message("pt updates [number] # shows number recent activity from your current project")
408
- message("")
409
- message("All commands can be ran without arguments for a wizard like UI.")
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} to don't ask you again."
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
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-02-17 00:00:00.000000000Z
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: &70212799238280 !ruby/object:Gem::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: *70212799238280
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: &70212799237420 !ruby/object:Gem::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: *70212799237420
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: &70212799236680 !ruby/object:Gem::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: *70212799236680
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: &70212799235800 !ruby/object:Gem::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: *70212799235800
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.16
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.