spregen 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -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
@@ -0,0 +1,2 @@
1
+ require_relative 'spregen/report.rb'
2
+ require_relative 'spregen/config.rb'
@@ -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,14 @@
1
+ module Spregen
2
+ class Burndown
3
+
4
+ def initialize(params)
5
+
6
+ end
7
+
8
+ def generate
9
+
10
+ end
11
+
12
+ end
13
+
14
+ 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,11 @@
1
+
2
+ module Spregen
3
+ module Template
4
+ module_function
5
+
6
+ def build(binding)
7
+ template = File.read(File.expand_path('../../templates/default.erb', __FILE__))
8
+ ERB.new(template).result(binding)
9
+ end
10
+ end
11
+ 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: