pv 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,27 +2,31 @@ require 'pivotal_tracker'
2
2
 
3
3
  module Pv
4
4
  class BugTracker
5
- attr_reader :username, :password, :token
5
+ attr_reader :username, :password, :token, :project
6
6
 
7
- def initialize with_username=nil, and_password=nil
7
+ # Connect to Pivotal Tracker
8
+ def initialize with_username=nil, and_password=nil, and_project_id=nil
8
9
  @username = with_username || Pv.config.username
9
10
  @password = and_password || Pv.config.password
10
11
  @token = PivotalTracker::Client.token(username, password)
11
12
 
13
+ @project = begin
14
+ project_id = and_project_id || Pv.config.project_id
15
+ PivotalTracker::Project.all.select { |p| p.id == project_id }.first if @token.present?
16
+ end
17
+
12
18
  PivotalTracker::Client.use_ssl = true
13
19
  end
14
20
 
21
+ # Test whether we are connected.
15
22
  def connected?
16
- @token != nil
23
+ @token.present?
17
24
  end
18
25
 
19
- def stories for_project_id=nil, and_full_name=nil
20
- project_id = for_project_id || Pv.config.project_id
21
- user = and_full_name || Pv.config.name
22
-
23
- project = PivotalTracker::Project.all.select { |p| p.id == project_id }.first
24
-
25
- project.stories.all(owned_by: user).reject { |s| s.current_state =~ /accepted|delivered/ }
26
+ # Find stories filtered by this username.
27
+ def stories by_user_name=nil
28
+ user = by_user_name || Pv.config.name
29
+ @project.stories.all(owned_by: user).reject { |s| s.current_state =~ /accepted|delivered/ }
26
30
  end
27
31
  end
28
32
  end
data/lib/pv/command.rb CHANGED
@@ -19,16 +19,19 @@ module Pv
19
19
  def show story_id
20
20
  sha = Digest::HMAC.hexdigest story_id.to_s, Time.now.to_s, Digest::SHA1
21
21
  File.write "/tmp/story-#{sha}", Story.find(story_id).render
22
- run "less -R /tmp/story-#{sha}"
23
- run "rm -rf /tmp/story-#{sha}"
22
+ system "$PAGER /tmp/story-#{sha}"
23
+ system "rm -rf /tmp/story-#{sha}"
24
24
  end
25
25
 
26
26
  desc "edit STORY_ID STATUS", "Edit a story's status on this project."
27
27
  #method_option :message, default: "", alias: 'm'
28
28
  def edit story_id, status
29
- story = Story.find story_id
30
- unless story.update(status)
31
- run "Error: Story did not update."
29
+ story = Story.find(story_id) or raise "Error: Story not found"
30
+
31
+ if story.update(status)
32
+ say "#{status.titleize} ##{story_id}"
33
+ else
34
+ say "Error: Story did not update."
32
35
  end
33
36
  end
34
37
 
@@ -39,10 +42,28 @@ module Pv
39
42
  end
40
43
  end
41
44
 
45
+ desc "create {bug|feature|chore} NAME", "Create a new story on this project"
46
+ method_option :assign_to
47
+ def create type, name
48
+ with_attributes = options.merge(story_type: type, name: name)
49
+ story = Story.create with_attributes
50
+
51
+ if story.saved?
52
+ say "Created #{type.titleize} ##{story.id}: '#{name}'"
53
+ else
54
+ say "Error saving #{type} with '#{name}'"
55
+ end
56
+ end
57
+
42
58
  desc :help, "Show all commands"
43
59
  def help
44
60
  say IO.read("#{Pv.root}/lib/templates/help.txt")
45
61
  super
46
62
  end
63
+
64
+ desc "open STORY_ID", "Open this Pivotal story in a browser"
65
+ def open story_id
66
+ run "open https://www.pivotaltracker.com/story/show/#{story_id}"
67
+ end
47
68
  end
48
69
  end
data/lib/pv/story.rb CHANGED
@@ -13,12 +13,14 @@ module Pv
13
13
  end
14
14
  end
15
15
 
16
+ # Find a story by its Pivotal ID
16
17
  def self.find by_id
17
18
  new Pv.tracker.stories.select { |s| s.id == by_id.to_i }.first
18
19
  end
19
20
 
20
- def self.present?
21
- not nil?
21
+ # Build a new Pivotal story with the given attributes.
22
+ def self.create from_attributes={}
23
+ new Pv.tracker.project.stories.create from_attributes
22
24
  end
23
25
 
24
26
  # Render this Story in plain text.
@@ -28,8 +30,24 @@ module Pv
28
30
  template.result(binding)
29
31
  end
30
32
 
33
+ # Update the current status of a Story.
31
34
  def update(status)
32
35
  @pivotal_story.update(current_state: status)
33
36
  end
37
+
38
+ # Test if this story has been saved on Pivotal.
39
+ def saved?
40
+ Pv.tracker.project.stories.find(id).present?
41
+ end
42
+
43
+ # Test if this story has any errors.
44
+ def valid?
45
+ errors.any?
46
+ end
47
+
48
+ # Show all errors related to this story.
49
+ def errors
50
+ @pivotal_story.errors
51
+ end
34
52
  end
35
53
  end
data/lib/pv/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pv
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
data/lib/pv.rb CHANGED
@@ -8,14 +8,17 @@ require 'pv/bug_tracker'
8
8
  require 'pv/story'
9
9
 
10
10
  module Pv
11
+ # Load YAML configuration
11
12
  def self.config
12
13
  @config ||= Pv::Configuration.new
13
14
  end
14
15
 
16
+ # Connect to Pivotal Tracker
15
17
  def self.tracker
16
18
  @tracker ||= Pv::BugTracker.new
17
19
  end
18
20
 
21
+ # Find where this code lives
19
22
  def self.root
20
23
  @root ||= begin
21
24
  spec = Gem::Specification.find_by_name 'pv'
@@ -43,14 +43,14 @@ http_interactions:
43
43
  cHJpdmF0ZSwgbWF4LWFnZT0wLCBtdXN0LXJldmFsaWRhdGU=
44
44
  !binary "WC1SdW50aW1l":
45
45
  - !binary |-
46
- MTE3
46
+ MTI0
47
47
  !binary "U2V0LUNvb2tpZQ==":
48
48
  - !binary |-
49
- dF9zZXNzaW9uPUJBaDdCem9QWlhod2FYSmxjMTloZEVsMU9nbFVhVzFsRFNZ
50
- ckhJRHJNR2RWQmpvZlFHMWhjbk5vWVd4ZmQybDBhRjkxZEdOZlkyOWxjbU5w
51
- YjI1R09nOXpaWE56YVc5dVgybGtJaVZoTUdRNE1tTmpNbUk0TldVMk1EaG1Z
52
- ekpqTkdOak9XVXhOR1V3T1RGak9RJTNEJTNELS0zZmJiYmY3MjA5MjMwNTI1
53
- YTQ3N2U3ZmViNTdiNzRkZjQxZDk0ZGFmOyBwYXRoPS87IHNlY3VyZTsgSHR0
49
+ dF9zZXNzaW9uPUJBaDdCem9QWlhod2FYSmxjMTloZEVsMU9nbFVhVzFsRFk4
50
+ ckhJQXpwN3BLQmpvZlFHMWhjbk5vWVd4ZmQybDBhRjkxZEdOZlkyOWxjbU5w
51
+ YjI1R09nOXpaWE56YVc5dVgybGtJaVV3TXpjek1HVTRPVFUyTldJMlpEWXda
52
+ VFJsWmpjM05UWmtabVkyT0dJd053JTNEJTNELS04Y2NmNWYwN2Q4MmZiOTgy
53
+ ZmM3YzAzM2UxYWQzNTc1MTA0NGRkMGEwOyBwYXRoPS87IHNlY3VyZTsgSHR0
54
54
  cE9ubHk=
55
55
  !binary "RXRhZw==":
56
56
  - !binary |-
@@ -70,5 +70,214 @@ http_interactions:
70
70
  cW8sIEc2o8aBIpHesXXqx1afSbTPnb3MpXHiRQaAfkBwagVO/ecvVvIujYkA
71
71
  AAA=
72
72
  http_version:
73
- recorded_at: Sun, 18 Nov 2012 06:21:24 GMT
73
+ recorded_at: Wed, 21 Nov 2012 15:18:43 GMT
74
+ - request:
75
+ method: get
76
+ uri: http://www.pivotaltracker.com/services/v3/projects
77
+ body:
78
+ encoding: US-ASCII
79
+ string: ''
80
+ headers:
81
+ Accept:
82
+ - ! '*/*; q=0.5, application/xml'
83
+ Accept-Encoding:
84
+ - gzip, deflate
85
+ X-Trackertoken:
86
+ - 5153bcd654f94815efe46352dfdd37e8
87
+ Content-Type:
88
+ - application/xml
89
+ User-Agent:
90
+ - Ruby
91
+ response:
92
+ status:
93
+ code: 200
94
+ message: !binary |-
95
+ T0s=
96
+ headers:
97
+ !binary "Q29udGVudC1UeXBl":
98
+ - !binary |-
99
+ YXBwbGljYXRpb24veG1sOyBjaGFyc2V0PXV0Zi04
100
+ !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
101
+ - !binary |-
102
+ Y2h1bmtlZA==
103
+ !binary "Q29ubmVjdGlvbg==":
104
+ - !binary |-
105
+ Y2xvc2U=
106
+ !binary "U3RhdHVz":
107
+ - !binary |-
108
+ MjAw
109
+ !binary "WC1Qb3dlcmVkLUJ5":
110
+ - !binary |-
111
+ UGh1c2lvbiBQYXNzZW5nZXIgKG1vZF9yYWlscy9tb2RfcmFjaykgMy4wLjE0
112
+ !binary "Q2FjaGUtQ29udHJvbA==":
113
+ - !binary |-
114
+ cHJpdmF0ZSwgbWF4LWFnZT0wLCBtdXN0LXJldmFsaWRhdGU=
115
+ !binary "RXRhZw==":
116
+ - !binary |-
117
+ ImRhZDE4ZjU5ZDQ0ZWNlYTdkOWQxNzE3Njg2MzFjMzcyIg==
118
+ !binary "WC1SdW50aW1l":
119
+ - !binary |-
120
+ MjI=
121
+ !binary "U2VydmVy":
122
+ - !binary |-
123
+ bmdpbngvMS4yLjIgKyBQaHVzaW9uIFBhc3NlbmdlciAzLjAuMTQgKG1vZF9y
124
+ YWlscy9tb2RfcmFjayk=
125
+ !binary "Q29udGVudC1FbmNvZGluZw==":
126
+ - !binary |-
127
+ Z3ppcA==
128
+ body:
129
+ encoding: ASCII-8BIT
130
+ string: !binary |-
131
+ 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
280
+ fojns+GHtkwfjFSYrP8HkcAOS6apAAA=
281
+ http_version:
282
+ recorded_at: Wed, 21 Nov 2012 15:18:44 GMT
74
283
  recorded_with: VCR 2.3.0