pivo 0.0.3 → 0.0.4
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.
- checksums.yaml +4 -4
- data/README.md +18 -21
- data/lib/pivo/commands.rb +88 -0
- data/lib/pivo/resource.rb +49 -0
- data/lib/pivo/version.rb +1 -1
- data/lib/pivo.rb +1 -59
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ddf9101bfda6e5401398c93bdf1e02e99ca4b9f
|
4
|
+
data.tar.gz: e250acbabf48a28012e328517827cc98529ec527
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 222db0f22f1abc80db68da9be32bc5e5397af8ced5946dd4301337f6d8d2ba4ab2dbca3dd9baa7a666af92eb7276117661a31249680b3f001af536b1ea76e2fb
|
7
|
+
data.tar.gz: c4804ca224482f05fdf1c6f7a926cae525bd10feaebc7238e23d7864a29ae1b9572e32fe663729b6b0d7585461e5f3e011c15ea398899fe45dd72782c82f0789
|
data/README.md
CHANGED
@@ -1,5 +1,20 @@
|
|
1
1
|
# Pivo
|
2
2
|
|
3
|
+
## Installation
|
4
|
+
|
5
|
+
Add this line to your application's Gemfile:
|
6
|
+
|
7
|
+
```ruby
|
8
|
+
gem 'pivo'
|
9
|
+
```
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install pivo
|
3
18
|
## Usage
|
4
19
|
|
5
20
|
Add [Pivotal Trackert](http://www.pivotaltracker.com/) API token to $HOME/.pivo.yml
|
@@ -18,6 +33,7 @@ $ pivo projects
|
|
18
33
|
|
19
34
|
```shell
|
20
35
|
$ pivo stories all PROJECT_NAME
|
36
|
+
$ pivo stories all PROJECT_NAME --status unstarted # filtering by status
|
21
37
|
```
|
22
38
|
|
23
39
|
### Listing mywork
|
@@ -25,6 +41,7 @@ $ pivo stories all PROJECT_NAME
|
|
25
41
|
|
26
42
|
```shell
|
27
43
|
$ pivo stories me PROJECT_NAME
|
44
|
+
$ pivo stories me PROJECT_NAME --status unstarted # filtering by status
|
28
45
|
```
|
29
46
|
|
30
47
|
#### with peco
|
@@ -36,29 +53,9 @@ function pivo-open() {
|
|
36
53
|
}
|
37
54
|
```
|
38
55
|
|
39
|
-
## Installation
|
40
|
-
|
41
|
-
Add this line to your application's Gemfile:
|
42
|
-
|
43
|
-
```ruby
|
44
|
-
gem 'pivo'
|
45
|
-
```
|
46
|
-
|
47
|
-
And then execute:
|
48
|
-
|
49
|
-
$ bundle
|
50
|
-
|
51
|
-
Or install it yourself as:
|
52
|
-
|
53
|
-
$ gem install pivo
|
54
|
-
|
55
|
-
## Usage
|
56
|
-
|
57
|
-
TODO: Write usage instructions here
|
58
|
-
|
59
56
|
## Contributing
|
60
57
|
|
61
|
-
1. Fork it ( https://github.com/
|
58
|
+
1. Fork it ( https://github.com/ukstudio/pivo/fork )
|
62
59
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
63
60
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
64
61
|
4. Push to the branch (`git push origin my-new-feature`)
|
@@ -0,0 +1,88 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'tracker_api'
|
3
|
+
require 'thor'
|
4
|
+
require 'date'
|
5
|
+
|
6
|
+
require 'pivo/resource'
|
7
|
+
|
8
|
+
module Pivo
|
9
|
+
class Velocity < Thor
|
10
|
+
desc "velocity me PROJECT_NAME VELOCITY", "listing my stories each velocity"
|
11
|
+
def me(project_name, velocity)
|
12
|
+
me = Resource::Me.new
|
13
|
+
project = Resource::Project.find_by_name(project_name)
|
14
|
+
stories = project.stories(filter: "owner:\"#{me.name}\"")
|
15
|
+
|
16
|
+
days = %w(Sunday Monday Tuesday Wednesday Thursday Friday Saturday)
|
17
|
+
week_start_day = project.week_start_day
|
18
|
+
index_of_start_day = days.index(week_start_day)
|
19
|
+
current_day = DateTime.now.wday
|
20
|
+
diff = current_day-index_of_start_day
|
21
|
+
diff = 7 - diff if diff < 0
|
22
|
+
|
23
|
+
current_iteration_start_date = DateTime.now - diff
|
24
|
+
|
25
|
+
point = 0
|
26
|
+
iteration_index = 1
|
27
|
+
say "\n===#{current_iteration_start_date.strftime('%Y-%m-%d %a')}=========================================================================\n\n"
|
28
|
+
stories.each do |story |
|
29
|
+
if point + story.estimate > velocity.to_i
|
30
|
+
say "total point: #{point}"
|
31
|
+
say "\n===#{(current_iteration_start_date + iteration_index*7).strftime('%Y-%m-%d %a')}=========================================================================\n\n"
|
32
|
+
iteration_index += 1
|
33
|
+
point = story.estimate
|
34
|
+
else
|
35
|
+
point += story.estimate
|
36
|
+
end
|
37
|
+
say Resource::Story.new(story).to_s
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
class Stories < Thor
|
43
|
+
|
44
|
+
desc "all PROJECT_NAME", "listing all stories"
|
45
|
+
option :status, type: 'string', desc: "unscheduled, unstarted, planned, rejected, started, finished, delivered, accepted"
|
46
|
+
def all(project_name)
|
47
|
+
project = Resource::Project.find_by_name(project_name)
|
48
|
+
filtering_options = {}
|
49
|
+
filtering_options.merge!(with_state: options[:status]) if options[:status]
|
50
|
+
project.stories(filtering_options).each do |story|
|
51
|
+
say "[#{story.current_state}]\t#{story.name}\t#{story.url}"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
desc "me PROJECT_NAME", "listing my stories"
|
56
|
+
option :status, type: 'string', desc: "unscheduled, unstarted, planned, rejected, started, finished, delivered, accepted"
|
57
|
+
def me(project_name)
|
58
|
+
me = Resource::Me.new
|
59
|
+
project = Resource::Project.find_by_name(project_name)
|
60
|
+
filtering_options = {}
|
61
|
+
filtering_options.merge!(filter: "state:#{options[:status]} owner:\"#{me.name}\"")
|
62
|
+
project.stories(filtering_options).each do |story|
|
63
|
+
say Resource::Story.new(story).to_s
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
class CLI < Thor
|
69
|
+
desc "projects", "listing project names"
|
70
|
+
def projects
|
71
|
+
say Resource::Project.all.map(&:name).join("\n")
|
72
|
+
end
|
73
|
+
|
74
|
+
desc "stories PROJECT_NAME", "listing project stories"
|
75
|
+
def stories(project_name)
|
76
|
+
project = Resource::Project.find_by_name(project_name)
|
77
|
+
project.stories.each do |story|
|
78
|
+
say Resource::Story.new(story).to_s
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
desc "stories SUBCOMMAND ARGS", "listing stories"
|
83
|
+
subcommand "stories", Stories
|
84
|
+
|
85
|
+
desc "velocity SUBCOMMAND ARGS", "listing stories each velocity"
|
86
|
+
subcommand "velocity", Velocity
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Resource
|
2
|
+
module ApiClient
|
3
|
+
private
|
4
|
+
|
5
|
+
def client
|
6
|
+
TrackerApi::Client.new(token: token)
|
7
|
+
end
|
8
|
+
|
9
|
+
def token
|
10
|
+
YAML.load(File.read("#{ENV['HOME']}/.pivo.yml"))['token']
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class Me
|
15
|
+
include ApiClient
|
16
|
+
|
17
|
+
def initialize
|
18
|
+
@me = client.me
|
19
|
+
end
|
20
|
+
|
21
|
+
def name
|
22
|
+
@me.name
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class Project
|
27
|
+
extend ApiClient
|
28
|
+
|
29
|
+
class << self
|
30
|
+
def all
|
31
|
+
client.projects
|
32
|
+
end
|
33
|
+
|
34
|
+
def find_by_name(name)
|
35
|
+
client.projects.select {|project| project.name == name}[0]
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
class Story
|
41
|
+
def initialize(story)
|
42
|
+
@story = story
|
43
|
+
end
|
44
|
+
|
45
|
+
def to_s
|
46
|
+
"[#{@story.estimate}][#{@story.current_state}]\t#{@story.name}\t#{@story.url}"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/lib/pivo/version.rb
CHANGED
data/lib/pivo.rb
CHANGED
@@ -1,63 +1,5 @@
|
|
1
1
|
require "pivo/version"
|
2
|
-
|
3
|
-
require 'yaml'
|
4
|
-
require 'tracker_api'
|
5
|
-
require 'thor'
|
2
|
+
require "pivo/commands"
|
6
3
|
|
7
4
|
module Pivo
|
8
|
-
class Stories < Thor
|
9
|
-
desc "stories all PROJECT_NAME", "listing all stories"
|
10
|
-
def all(project_name)
|
11
|
-
project = client.projects.select {|project| project.name == project_name}[0]
|
12
|
-
project.stories.each do |story|
|
13
|
-
say "[#{story.current_state}]\t#{story.name}\t#{story.url}"
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
desc "stories me PROJECT_NAME", "listing my stories"
|
18
|
-
def me(project_name)
|
19
|
-
me = client.me
|
20
|
-
project = client.projects.select {|project| project.name == project_name}[0]
|
21
|
-
project.stories(filter: "mywork:\"#{me.name}\"").each do |story|
|
22
|
-
say "[#{story.current_state}]\t#{story.name}\t#{story.url}"
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
|
28
|
-
def client
|
29
|
-
TrackerApi::Client.new(token: token)
|
30
|
-
end
|
31
|
-
|
32
|
-
def token
|
33
|
-
YAML.load(File.read("#{ENV['HOME']}/.pivo.yml"))['token']
|
34
|
-
end
|
35
|
-
end
|
36
|
-
class CLI < Thor
|
37
|
-
desc "projects", "listing project names"
|
38
|
-
def projects
|
39
|
-
say client.projects.map(&:name).join("\n")
|
40
|
-
end
|
41
|
-
|
42
|
-
desc "stories PROJECT_NAME", "listing project stories"
|
43
|
-
def stories(project_name)
|
44
|
-
project = client.projects.select {|project| project.name == project_name}[0]
|
45
|
-
project.stories.each do |story|
|
46
|
-
say "[#{story.current_state}]\t#{story.name}\t#{story.url}"
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
desc "stories SUBCOMMAND ARGS", "listing stories"
|
51
|
-
subcommand "stories", Stories
|
52
|
-
|
53
|
-
private
|
54
|
-
|
55
|
-
def client
|
56
|
-
TrackerApi::Client.new(token: token)
|
57
|
-
end
|
58
|
-
|
59
|
-
def token
|
60
|
-
YAML.load(File.read("#{ENV['HOME']}/.pivo.yml"))['token']
|
61
|
-
end
|
62
|
-
end
|
63
5
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pivo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- AKAMATSU Yuki
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -67,6 +67,8 @@ files:
|
|
67
67
|
- Rakefile
|
68
68
|
- bin/pivo
|
69
69
|
- lib/pivo.rb
|
70
|
+
- lib/pivo/commands.rb
|
71
|
+
- lib/pivo/resource.rb
|
70
72
|
- lib/pivo/version.rb
|
71
73
|
- pivo.gemspec
|
72
74
|
homepage: https://github.com/ukstudio/pivo
|