pivo_flow 0.3.9 → 0.4.0

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.
data/README.md CHANGED
@@ -49,18 +49,23 @@ Display current gem version
49
49
 
50
50
  pf version
51
51
 
52
+ Show current STORY_ID from temp file
53
+
54
+ pf current
55
+
52
56
  ## Git-hooks
53
57
 
54
58
  This gem installs a `pepare-commit-msg` hook by adding a reference to `pf-prepare-commit-msg` file. In short: you shouldn't be worried about your own `prepare-commit-msg` hook, the one added by `pivo_flow` will be added in the last line of original hook file.
55
59
 
56
60
  ## Roadmap
57
61
 
58
- ### Incoming releases
62
+ ### 0.4 Current release
59
63
 
60
- * story statistics
61
64
  * colorized output
65
+ * **TODO** story statistics
66
+ * **TODO** git statistics (number of commits in some peroid, average, etc.)
62
67
 
63
- ### 0.3 Current release
68
+ ### 0.3
64
69
 
65
70
  * single-story view with comments and tasks
66
71
  * flow:
data/lib/pivo_flow/cli.rb CHANGED
@@ -100,17 +100,18 @@ module PivoFlow
100
100
  @options = {}
101
101
 
102
102
  opt_parser = OptionParser.new do |opts|
103
- opts.banner = "Usage: pf <COMMAND> [OPTIONS]\n"
103
+ opts.banner = "\nPivoFlow ver. #{PivoFlow::VERSION}\nUsage: pf <COMMAND> [OPTIONS]\n"
104
104
  opts.separator "Commands"
105
- opts.separator " clear: clears STORY_ID from temp file"
106
- opts.separator " deliver: shows finished stories and mark selected as delivered in Pivotal Tracker"
107
- opts.separator " help shows this message"
108
- opts.separator " finish [STORY_ID]: finish story on Pivotal"
109
- opts.separator " info: shows info about current story"
110
- opts.separator " reconfig: clears API_TOKEN and PROJECT_ID from git config"
111
- opts.separator " start <STORY_ID>: start a story of given ID"
112
- opts.separator " stories: list stories for current project"
113
- opts.separator " version: show gem version"
105
+ opts.separator " clear clear STORY_ID from temp file"
106
+ opts.separator " current show STORY_ID from temp file"
107
+ opts.separator " deliver show finished stories and mark selected as delivered in Pivotal Tracker"
108
+ opts.separator " help show this message"
109
+ opts.separator " finish [STORY_ID] finish story on Pivotal"
110
+ opts.separator " info show info about current story"
111
+ opts.separator " reconfig clear API_TOKEN and PROJECT_ID from git config and setup new values"
112
+ opts.separator " start <STORY_ID> start a story of given ID"
113
+ opts.separator " stories list stories for current project"
114
+ opts.separator " version show gem version"
114
115
  opts.separator ""
115
116
  opts.separator "Options"
116
117
 
@@ -124,11 +125,11 @@ module PivoFlow
124
125
  return 1
125
126
  end
126
127
 
127
- opts.on("-t <API_TOKEN>", "--token <API_TOKEN>", "Sets Pivotal Tracker API TOKEN") do |api_token|
128
+ opts.on("-t <API_TOKEN>", "--token <API_TOKEN>", "Set Pivotal Tracker API TOKEN") do |api_token|
128
129
  @options["api-token"] = api_token
129
130
  end
130
131
 
131
- opts.on("-p <PROJECT_ID>", "--project <PROJECT_ID>", Numeric, "Sets Pivotal Tracker PROJECT_ID") do |project_id|
132
+ opts.on("-p <PROJECT_ID>", "--project <PROJECT_ID>", Numeric, "Set Pivotal Tracker PROJECT_ID") do |project_id|
132
133
  @options["project-id"] = project_id
133
134
  end
134
135
 
@@ -90,7 +90,7 @@ module PivoFlow
90
90
  puts "\n[TASKS]"
91
91
  story.tasks.all.count.zero? ? puts(" no tasks") : print_tasks(story.tasks.all)
92
92
  puts "\n[NOTES]"
93
- story.notes.all.count.zero? ? puts(" no notes") : print_notes(story.notes.all)
93
+ story_notes(story).count.zero? ? puts(" no notes") : print_notes(story_notes(story))
94
94
  end
95
95
 
96
96
  def find_story story_id
@@ -98,6 +98,11 @@ module PivoFlow
98
98
  story.nil? ? @options[:project].stories.find(story_id) : story
99
99
  end
100
100
 
101
+ def story_notes story, exclude_commits=true
102
+ return story.notes.all unless exclude_commits
103
+ story.notes.all.select { |n| n.text !~ /Commit by/ }
104
+ end
105
+
101
106
  def story_string story, long=false
102
107
  vars = {
103
108
  story_id: story.id,
@@ -119,10 +124,31 @@ module PivoFlow
119
124
  Description: %{description}
120
125
  Estimate: %{estimate}" % vars
121
126
  else
122
- "[#%{story_id}] (%{started}) %{story_type} [%{estimate} pts.] %{owner} %{name}" % vars
127
+ "[#%{story_id}] (%{started}) %{story_type} [%{estimate} pts.] %{owner} %{name}".colorize(story_color(story)) % vars
123
128
  end
124
129
  end
125
130
 
131
+ def users_story?(story)
132
+ story.owned_by == user_name
133
+ end
134
+
135
+ def story_color story
136
+ if users_story?(story)
137
+ case story.story_type
138
+ when "feature" then :green
139
+ when "bug" then :red
140
+ when "chore" then :yellow
141
+ else :white
142
+ end
143
+ else
144
+ case story.story_type
145
+ when "feature" then :light_green
146
+ when "bug" then :light_red
147
+ when "chore" then :ligh_yellow
148
+ else :light_white
149
+ end
150
+ end
151
+ end
126
152
 
127
153
  def print_tasks tasks
128
154
  tasks.each { |task| puts task_string(task) }
@@ -226,8 +252,8 @@ module PivoFlow
226
252
  list_stories_to_output stories.first(9)
227
253
  end
228
254
 
229
- def fetch_stories(count = 100, state = "unstarted,started,unscheduled,rejected")
230
- conditions = { current_state: state, limit: count }
255
+ def fetch_stories(count = 100, state = "unstarted,started,unscheduled,rejected", story_type = "feature,chore,bug")
256
+ conditions = { current_state: state, limit: count, story_type: story_type }
231
257
  @options[:stories] = @options[:project].stories.all(conditions)
232
258
  end
233
259
 
@@ -1,3 +1,3 @@
1
1
  module PivoFlow
2
- VERSION = "0.3.9"
2
+ VERSION = "0.4.0"
3
3
  end
data/lib/pivo_flow.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'colorize'
1
2
  require 'grit'
2
3
  require 'optparse'
3
4
  require 'highline'
data/pivo_flow.gemspec CHANGED
@@ -18,6 +18,7 @@ Gem::Specification.new do |gem|
18
18
  gem.add_runtime_dependency "pivotal-tracker"
19
19
  gem.add_runtime_dependency "grit"
20
20
  gem.add_runtime_dependency "highline"
21
+ gem.add_runtime_dependency "colorize"
21
22
 
22
23
  gem.add_development_dependency "rspec"
23
24
  gem.add_development_dependency "simplecov"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pivo_flow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.9
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-15 00:00:00.000000000 Z
12
+ date: 2012-08-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: pivotal-tracker
@@ -59,6 +59,22 @@ dependencies:
59
59
  - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: colorize
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
62
78
  - !ruby/object:Gem::Dependency
63
79
  name: rspec
64
80
  requirement: !ruby/object:Gem::Requirement