pv 0.0.7 → 0.0.8

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.
@@ -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