spregen 0.0.1
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 +7 -0
- data/bin/spregen +29 -0
- data/lib/spregen.rb +2 -0
- data/lib/spregen/board.rb +47 -0
- data/lib/spregen/burndown.rb +14 -0
- data/lib/spregen/config.rb +24 -0
- data/lib/spregen/helpers.rb +30 -0
- data/lib/spregen/report.rb +56 -0
- data/lib/spregen/template.rb +11 -0
- data/lib/templates/default.erb +24 -0
- data/lib/templates/spregen-config.yml.erb +12 -0
- metadata +86 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 4b346f981e5128b6fbebf2915b0b9797d11d017f
|
4
|
+
data.tar.gz: 946e15ecdfca9b41f640da83b26527d3bed450dd
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7a7071e893db51495390c0e1ee261e08ea44b2cc9eb4ce4ed1ab5573e03c8fcd42b7299c7b924d732451f69468402ca9ecf831c12da52b8083f8c4e3785299ac
|
7
|
+
data.tar.gz: 3bcf78c790bccdece2621037eb3f00738ad26a39dfcc950f2f2401674ca2c77b1f5c5915ef13f0bd6ca7728ea62ef4cba113348823f1fd852b189cd695884eaf
|
data/bin/spregen
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'commander/import'
|
4
|
+
require 'spregen'
|
5
|
+
|
6
|
+
program :name, 'Spregen'
|
7
|
+
program :version, '0.0.1'
|
8
|
+
program :description, 'Generate Sprint Reports from your Trello board.'
|
9
|
+
|
10
|
+
command :generate do |c|
|
11
|
+
c.syntax = 'spregen generate <board-name>'
|
12
|
+
c.description = 'Generate the report'
|
13
|
+
c.action do |args, _|
|
14
|
+
fail 'You have to specify the board name' unless args.first
|
15
|
+
Spregen::Config.configure_trello_client
|
16
|
+
Spregen::Report.new(board_name: args.first).generate
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
command :configure do |c|
|
21
|
+
c.syntax = 'spregen configure'
|
22
|
+
c.description = 'Generate the spregen config file'
|
23
|
+
c.action do |_, _|
|
24
|
+
apikey = ask('Apikey: ')
|
25
|
+
member_token = ask('Member token: ')
|
26
|
+
Spregen::Config.create_config_file(apikey, member_token)
|
27
|
+
puts 'Config file generated at ~/.spregen-config.yml'
|
28
|
+
end
|
29
|
+
end
|
data/lib/spregen.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
module Spregen
|
2
|
+
class Board
|
3
|
+
attr_accessor :name
|
4
|
+
|
5
|
+
def initialize(configuration)
|
6
|
+
self.name = configuration[:board_name]
|
7
|
+
end
|
8
|
+
|
9
|
+
def lists
|
10
|
+
@lists ||= board.lists
|
11
|
+
end
|
12
|
+
|
13
|
+
def board
|
14
|
+
@board ||= Trello::Board.all.find { |x| x.name == self.name }
|
15
|
+
end
|
16
|
+
|
17
|
+
def bug_cards
|
18
|
+
@bug_cards ||= done_cards.find_all { |card| card.name =~ /\[BUG\]/i } if done_cards
|
19
|
+
end
|
20
|
+
|
21
|
+
def done_cards
|
22
|
+
@done_cards ||= get_cards(/^\[DONE\]/i)
|
23
|
+
end
|
24
|
+
|
25
|
+
def qa_cards
|
26
|
+
@qa_cards ||= get_cards(/^\[Q\.A\.\]/i)
|
27
|
+
end
|
28
|
+
|
29
|
+
def doing_cards
|
30
|
+
@doing_cards ||= get_cards(/^\[DOING\]/i)
|
31
|
+
end
|
32
|
+
|
33
|
+
def todo_cards
|
34
|
+
@todo_cards ||= get_cards(/^\[TODO\]/i)
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def get_cards(list_name)
|
40
|
+
card_list = lists.detect { |list| list.name =~ list_name }
|
41
|
+
return unless card_list.present?
|
42
|
+
card_list.cards.reject do |card|
|
43
|
+
card.labels.find { |label| label.name == 'Skip Report' }
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'trello'
|
3
|
+
|
4
|
+
module Spregen
|
5
|
+
module Config
|
6
|
+
CONFIG_PATH = '~/.spregen-config.yml'
|
7
|
+
|
8
|
+
module_function
|
9
|
+
|
10
|
+
def configure_trello_client
|
11
|
+
trello_config = YAML.load_file(File.expand_path(CONFIG_PATH))['trello']
|
12
|
+
Trello.configure do |config|
|
13
|
+
config.developer_public_key = trello_config['api_key']
|
14
|
+
config.member_token = trello_config['member_token']
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def create_config_file(api_key, member_token)
|
19
|
+
template = File.read(File.expand_path('../../templates/spregen-config.yml.erb', __FILE__))
|
20
|
+
result = ERB.new(template).result(binding)
|
21
|
+
File.open(File.expand_path('~/.spregen-config.yml'), 'w') { |file| file.write(result) }
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Spregen
|
2
|
+
module Helpers
|
3
|
+
|
4
|
+
ESTIMATE_POINTS_PATTERN = /[\(\[]\d(.\d)?[\)\]]/
|
5
|
+
|
6
|
+
def file
|
7
|
+
@file ||= File.open("#{@source.name}-report-#{today}.md", "w")
|
8
|
+
end
|
9
|
+
|
10
|
+
def rprint(cards, buffer = "")
|
11
|
+
return unless cards
|
12
|
+
cards.each do |card|
|
13
|
+
link = card.desc.split("\n").first || card.url
|
14
|
+
card_name = remove_estimate_points(card.name)
|
15
|
+
buffer << "\n" unless buffer.blank?
|
16
|
+
buffer << " - [#{card_name}](#{link})"
|
17
|
+
end
|
18
|
+
buffer
|
19
|
+
end
|
20
|
+
|
21
|
+
def today
|
22
|
+
Time.now.strftime("%d-%m-%Y-%M%S")
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
def remove_estimate_points(card_title)
|
27
|
+
card_title.gsub(ESTIMATE_POINTS_PATTERN, '')
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require_relative 'board'
|
2
|
+
require_relative 'burndown'
|
3
|
+
require_relative 'helpers'
|
4
|
+
require_relative 'template'
|
5
|
+
|
6
|
+
module Spregen
|
7
|
+
class Report
|
8
|
+
include Spregen::Helpers
|
9
|
+
|
10
|
+
attr_accessor :report
|
11
|
+
|
12
|
+
def initialize(configuration = {})
|
13
|
+
@source = Spregen::Board.new(configuration)
|
14
|
+
end
|
15
|
+
|
16
|
+
def generate
|
17
|
+
file.write print_report
|
18
|
+
file.close
|
19
|
+
end
|
20
|
+
|
21
|
+
def generate_burndown
|
22
|
+
burndown = Spregen::Burndown.new({})
|
23
|
+
burndown.generate
|
24
|
+
end
|
25
|
+
|
26
|
+
def print_report
|
27
|
+
Spregen::Template.build(binding)
|
28
|
+
end
|
29
|
+
|
30
|
+
def source
|
31
|
+
self
|
32
|
+
end
|
33
|
+
|
34
|
+
def title
|
35
|
+
"Report #{@source.name}"
|
36
|
+
end
|
37
|
+
|
38
|
+
def not_done
|
39
|
+
buffer = ''
|
40
|
+
rprint @source.doing_cards, buffer
|
41
|
+
rprint @source.todo_cards, buffer
|
42
|
+
end
|
43
|
+
|
44
|
+
def done
|
45
|
+
rprint @source.done_cards
|
46
|
+
end
|
47
|
+
|
48
|
+
def bugs
|
49
|
+
rprint @source.bug_cards
|
50
|
+
end
|
51
|
+
|
52
|
+
def qa
|
53
|
+
rprint @source.qa_cards
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
### <%= source.title %>
|
2
|
+
### Sprint Burndown
|
3
|
+
<%= source.generate_burndown %>
|
4
|
+
### Release Burndown
|
5
|
+
|
6
|
+
### Overview
|
7
|
+
|
8
|
+
### Not Done
|
9
|
+
<%= source.not_done %>
|
10
|
+
|
11
|
+
### QA
|
12
|
+
<%= source.qa %>
|
13
|
+
|
14
|
+
### Done
|
15
|
+
<%= source.done %>
|
16
|
+
|
17
|
+
### Bugs
|
18
|
+
<%= source.bugs %>
|
19
|
+
|
20
|
+
#### Retrospective
|
21
|
+
|
22
|
+
**Negatives**
|
23
|
+
|
24
|
+
**Positives**
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# Get your API keys from http://trello.com/app-key
|
2
|
+
# To get your member token, visit the URL [trello.com/1/authorize], with GET parameters as explained here https://trello.com/docs/gettingstarted/authorize.html
|
3
|
+
# Example: https://trello.com/1/authorize?key=YOURAPIKEY&response_type=token&expiration=never
|
4
|
+
# You should see a page asking you to authorize your Trello application. Click "allow" and you should see a second page with a long alphanumeric string. This is your member token.
|
5
|
+
|
6
|
+
trello:
|
7
|
+
api_key: <%= api_key %>
|
8
|
+
member_token: <%= member_token %>
|
9
|
+
|
10
|
+
source: trello
|
11
|
+
template: default
|
12
|
+
board_name: <%= ENV['BOARD'] %>
|
metadata
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: spregen
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Pedro Vitti
|
8
|
+
- Geison Biazus
|
9
|
+
- Murillo Flores
|
10
|
+
- Luciano Medeiros
|
11
|
+
autorequire:
|
12
|
+
bindir: bin
|
13
|
+
cert_chain: []
|
14
|
+
date: 2015-09-15 00:00:00.000000000 Z
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: commander
|
18
|
+
requirement: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - '='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 4.3.4
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - '='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 4.3.4
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: ruby-trello
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
requirements:
|
34
|
+
- - '='
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 1.2.1
|
37
|
+
type: :runtime
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - '='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 1.2.1
|
44
|
+
description: A simple trello report generation gem
|
45
|
+
email:
|
46
|
+
executables:
|
47
|
+
- spregen
|
48
|
+
extensions: []
|
49
|
+
extra_rdoc_files: []
|
50
|
+
files:
|
51
|
+
- bin/spregen
|
52
|
+
- lib/spregen.rb
|
53
|
+
- lib/spregen/board.rb
|
54
|
+
- lib/spregen/burndown.rb
|
55
|
+
- lib/spregen/config.rb
|
56
|
+
- lib/spregen/helpers.rb
|
57
|
+
- lib/spregen/report.rb
|
58
|
+
- lib/spregen/template.rb
|
59
|
+
- lib/templates/default.erb
|
60
|
+
- lib/templates/spregen-config.yml.erb
|
61
|
+
homepage: https://github.com/pedrovitti/spregen
|
62
|
+
licenses:
|
63
|
+
- MIT
|
64
|
+
metadata: {}
|
65
|
+
post_install_message:
|
66
|
+
rdoc_options: []
|
67
|
+
require_paths:
|
68
|
+
- lib
|
69
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '0'
|
74
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
requirements: []
|
80
|
+
rubyforge_project:
|
81
|
+
rubygems_version: 2.4.8
|
82
|
+
signing_key:
|
83
|
+
specification_version: 4
|
84
|
+
summary: Spregen!
|
85
|
+
test_files: []
|
86
|
+
has_rdoc:
|