trollolo 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/README.md +4 -3
- data/lib/burndown_chart.rb +10 -6
- data/lib/burndown_data.rb +34 -16
- data/lib/card.rb +18 -0
- data/lib/checklist.rb +9 -0
- data/lib/cli.rb +36 -114
- data/lib/column.rb +5 -1
- data/lib/scrum_board.rb +40 -0
- data/lib/trello_wrapper.rb +5 -0
- data/lib/trollolo.rb +1 -0
- data/lib/version.rb +1 -1
- data/spec/data/attachment-data +1 -0
- data/spec/data/board.json +2 -1
- data/spec/data/burndown-data.yaml +6 -0
- data/spec/data/burndown_dir/burndown-data-02.yaml +13 -1
- data/spec/data/create_burndown_helper/burndown-08.png +0 -0
- data/spec/data/create_burndown_helper/burndown-23.png +0 -0
- data/spec/data/create_burndown_helper/burndown-31.png +0 -0
- data/spec/data/create_burndown_helper/burndown-35.png +0 -0
- data/spec/data/full-board.json +166 -22
- data/spec/unit/backup_spec.rb +5 -0
- data/spec/unit/burndown_chart_spec.rb +176 -85
- data/spec/unit/burndown_data_spec.rb +77 -45
- data/spec/unit/card_spec.rb +75 -0
- data/spec/unit/cli_spec.rb +71 -10
- data/spec/unit/support/update_webmock_data +22 -4
- data/spec/unit/trello_wrapper_spec.rb +30 -0
- data/trollolo.gemspec +2 -2
- data/yes_ship_it.conf +2 -2
- metadata +18 -19
- data/man/trollolo.1 +0 -128
- data/man/trollolo.1.html +0 -219
@@ -1,17 +1,35 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
+
require "json"
|
4
|
+
|
3
5
|
require_relative "webmocks"
|
4
6
|
|
5
|
-
trollolo_bin = File.expand_path("
|
6
|
-
spec_data_dir = File.expand_path("
|
7
|
+
trollolo_bin = File.expand_path("../../../../bin/trollolo", __FILE__)
|
8
|
+
spec_data_dir = File.expand_path("../../../data", __FILE__)
|
7
9
|
|
8
10
|
STDERR.puts "Updating web mock data"
|
9
11
|
|
12
|
+
def scrub_file(file)
|
13
|
+
json = JSON.parse(File.read(file))
|
14
|
+
if json.is_a?(Hash) and json.has_key?("cards")
|
15
|
+
json["cards"].each do |card|
|
16
|
+
card["email"] = "trello@example.com"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
File.open(file, "w") do |f|
|
20
|
+
f.write(JSON.pretty_generate(json))
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
10
24
|
webmock_mapping.each do |mapping|
|
11
25
|
url = mapping[:path] + parameters_as_string(mapping)
|
12
|
-
|
26
|
+
filename = mapping[:file]
|
13
27
|
|
14
|
-
|
28
|
+
file = File.join(spec_data_dir, filename)
|
29
|
+
|
30
|
+
cmd = "#{trollolo_bin} get-raw '#{url}' >#{file}"
|
15
31
|
puts cmd
|
16
32
|
system cmd
|
33
|
+
|
34
|
+
scrub_file(file)
|
17
35
|
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
require_relative 'spec_helper'
|
2
2
|
|
3
|
+
include GivenFilesystemSpecHelpers
|
4
|
+
|
3
5
|
describe TrelloWrapper do
|
4
6
|
|
5
7
|
let!(:settings){ double('settings', developer_public_key: "mykey", member_token: "mytoken") }
|
@@ -44,4 +46,32 @@ describe TrelloWrapper do
|
|
44
46
|
expect(subject.board("myboard")).to be subject.board("myboard")
|
45
47
|
end
|
46
48
|
end
|
49
|
+
|
50
|
+
describe '#add_attachment' do
|
51
|
+
use_given_filesystem
|
52
|
+
|
53
|
+
it "uploads attachment" do
|
54
|
+
srand(1) # Make sure multipart boundary is always the same
|
55
|
+
|
56
|
+
card_body = <<EOT
|
57
|
+
{
|
58
|
+
"name": "mycard",
|
59
|
+
"id": "123"
|
60
|
+
}
|
61
|
+
EOT
|
62
|
+
|
63
|
+
stub_request(:get, "https://api.trello.com/1/cards/123?key=mykey&token=mytoken").
|
64
|
+
with(:headers => {'Accept'=>'*/*; q=0.5, application/xml', 'Accept-Encoding'=>'gzip, deflate', 'User-Agent'=>'Ruby'}).
|
65
|
+
to_return(:status => 200, :body => card_body, :headers => {})
|
66
|
+
|
67
|
+
stub_request(:post, "https://api.trello.com/1/cards/123/attachments?key=mykey&token=mytoken").
|
68
|
+
with(:body => "--470924\r\nContent-Disposition: form-data; name=\"file\"; filename=\"attachment-data\"\r\nContent-Type: text/plain\r\n\r\nabc\n\r\n--470924\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\n\r\n--470924--\r\n",
|
69
|
+
:headers => {'Accept'=>'*/*; q=0.5, application/xml', 'Accept-Encoding'=>'gzip, deflate', 'Content-Length'=>'188', 'Content-Type'=>'multipart/form-data; boundary=470924', 'User-Agent'=>'Ruby'}).
|
70
|
+
to_return(:status => 200, :body => "", :headers => {})
|
71
|
+
|
72
|
+
path = given_file("attachment-data")
|
73
|
+
|
74
|
+
subject.add_attachment("123", path)
|
75
|
+
end
|
76
|
+
end
|
47
77
|
end
|
data/trollolo.gemspec
CHANGED
@@ -15,8 +15,8 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.required_rubygems_version = '>= 1.3.6'
|
16
16
|
s.rubyforge_project = 'trollolo'
|
17
17
|
|
18
|
-
s.add_dependency 'thor', '
|
19
|
-
s.add_dependency 'ruby-trello', '
|
18
|
+
s.add_dependency 'thor', '~> 0.19'
|
19
|
+
s.add_dependency 'ruby-trello', '~> 1.1'
|
20
20
|
|
21
21
|
s.files = `git ls-files`.split("\n")
|
22
22
|
s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
|
data/yes_ship_it.conf
CHANGED
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trollolo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cornelius Schumacher
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-11-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.19
|
19
|
+
version: '0.19'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.19
|
26
|
+
version: '0.19'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: ruby-trello
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.1
|
33
|
+
version: '1.1'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.1
|
40
|
+
version: '1.1'
|
41
41
|
description: Trollolo is a command line tool to access Trello and support tasks like
|
42
42
|
generation of burndown charts.
|
43
43
|
email:
|
@@ -47,9 +47,9 @@ executables:
|
|
47
47
|
extensions: []
|
48
48
|
extra_rdoc_files: []
|
49
49
|
files:
|
50
|
-
- .gitignore
|
51
|
-
- .rspec
|
52
|
-
- .travis.yml
|
50
|
+
- ".gitignore"
|
51
|
+
- ".rspec"
|
52
|
+
- ".travis.yml"
|
53
53
|
- CHANGELOG.md
|
54
54
|
- CONTRIBUTING.md
|
55
55
|
- COPYING
|
@@ -63,6 +63,7 @@ files:
|
|
63
63
|
- lib/burndown_chart.rb
|
64
64
|
- lib/burndown_data.rb
|
65
65
|
- lib/card.rb
|
66
|
+
- lib/checklist.rb
|
66
67
|
- lib/cli.rb
|
67
68
|
- lib/column.rb
|
68
69
|
- lib/result.rb
|
@@ -78,6 +79,7 @@ files:
|
|
78
79
|
- scripts/create_burndown.py
|
79
80
|
- scripts/graph.py
|
80
81
|
- scripts/plot.py
|
82
|
+
- spec/data/attachment-data
|
81
83
|
- spec/data/board-list.yaml
|
82
84
|
- spec/data/board.json
|
83
85
|
- spec/data/burndown-data-10.yaml
|
@@ -121,8 +123,6 @@ files:
|
|
121
123
|
- spec/unit/trello_wrapper_spec.rb
|
122
124
|
- trollolo.gemspec
|
123
125
|
- yes_ship_it.conf
|
124
|
-
- man/trollolo.1
|
125
|
-
- man/trollolo.1.html
|
126
126
|
homepage: https://github.com/openSUSE/trollolo
|
127
127
|
licenses:
|
128
128
|
- GPL-3
|
@@ -133,19 +133,18 @@ require_paths:
|
|
133
133
|
- lib
|
134
134
|
required_ruby_version: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- -
|
136
|
+
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
139
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
140
140
|
requirements:
|
141
|
-
- -
|
141
|
+
- - ">="
|
142
142
|
- !ruby/object:Gem::Version
|
143
143
|
version: 1.3.6
|
144
144
|
requirements: []
|
145
145
|
rubyforge_project: trollolo
|
146
|
-
rubygems_version: 2.
|
146
|
+
rubygems_version: 2.4.5.1
|
147
147
|
signing_key:
|
148
148
|
specification_version: 4
|
149
149
|
summary: Trello command line client
|
150
150
|
test_files: []
|
151
|
-
has_rdoc:
|
data/man/trollolo.1
DELETED
@@ -1,128 +0,0 @@
|
|
1
|
-
.\" generated with Ronn/v0.7.3
|
2
|
-
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
|
-
.
|
4
|
-
.TH "TROLLOLO" "1" "June 2014" "" ""
|
5
|
-
.
|
6
|
-
.SH "NAME"
|
7
|
-
\fBTrollolo\fR \- Trello command line client
|
8
|
-
.
|
9
|
-
.SH "SYNOPSIS"
|
10
|
-
\fBtrollolo\fR [command] [options]
|
11
|
-
.
|
12
|
-
.P
|
13
|
-
\fBtrollolo\fR help [command]
|
14
|
-
.
|
15
|
-
.SH "DESCRIPTION"
|
16
|
-
\fBTrollolo\fR is a command line client for Trello\. It supports fetching lists and cards and has functionality for extracting data for burndown charts\.
|
17
|
-
.
|
18
|
-
.SH "GENERAL OPTIONS"
|
19
|
-
.
|
20
|
-
.TP
|
21
|
-
\fB\-\-version\fR
|
22
|
-
Give out version of trollolo tool\. Exit when done\.
|
23
|
-
.
|
24
|
-
.TP
|
25
|
-
\fB\-\-verbose\fR
|
26
|
-
Run in verbose mode\.
|
27
|
-
.
|
28
|
-
.TP
|
29
|
-
\fB\-\-board\-id\fR
|
30
|
-
Most commands take a \fBboard\-id\fR parameter\. This is the id of the Trello board\. It is the cryptic part of the URL of the Trello board\.
|
31
|
-
.
|
32
|
-
.TP
|
33
|
-
\fB\-\-raw\fR
|
34
|
-
Some of the commands take a \fBraw\fR option\. If this is provided the commands put out the raw JSON returned by the server instead of processing it to a more human\-readable version\.
|
35
|
-
.
|
36
|
-
.SH "COMMANDS"
|
37
|
-
.
|
38
|
-
.SS "burndown\-init \-\- Initialize burndown chart"
|
39
|
-
\fBtrollolo burndown\-init \-\-board\-id=<board id> \-\-output=<directory>\fR
|
40
|
-
.
|
41
|
-
.P
|
42
|
-
Initialize the given directory for the generation of burndown charts\. It stores the given board id in the directory in a YAML file together with other configuration data\. The YAML file also is used to store the data for the burndown charts\. The \fBburndown\fR command can be used to update the file with data from the specified Trello board\.
|
43
|
-
.
|
44
|
-
.P
|
45
|
-
The directory also gets a script to do the actual generation of the burndown chart\. Just run this script after each update of the data to get the latest burndown chart\.
|
46
|
-
.
|
47
|
-
.SS "burndown \-\- Process data for burndown chart"
|
48
|
-
\fBtrollolo burndown \-\-output=<directory>\fR
|
49
|
-
.
|
50
|
-
.P
|
51
|
-
Update the burndown data in the given directory from the Trello board specified in the YAML file in the directory\. The given directory has to be initialized before running the \fBburndown\fR command by running the \fBburndown\-init\fR command\.
|
52
|
-
.
|
53
|
-
.P
|
54
|
-
The actual generation of the burndown chart is done by running the script which is put into the directory by the \fBburndown\-init\fR command\.
|
55
|
-
.
|
56
|
-
.P
|
57
|
-
For correct generation of the burndown chart, the Trello board has to follow a few convention\. They are described in the section \fBCONVENTIONS for SCRUM BOARDS\fR\.
|
58
|
-
.
|
59
|
-
.SS "fetch\-burndown\-data \-\- Read data for burndown chart"
|
60
|
-
\fBtrollolo fetch\-burndown\-data \-\-board\-id=<board id>\fR
|
61
|
-
.
|
62
|
-
.P
|
63
|
-
Reads data from the specified Trello board, extracts it according to the conventions for Scrum boards, and reports burndown data\.
|
64
|
-
.
|
65
|
-
.SS "get\-cards \-\- Get card data for a board"
|
66
|
-
Read all card data for a given board\.
|
67
|
-
.
|
68
|
-
.SS "get\-checklists \-\- Get checklist data for a board"
|
69
|
-
Read all checklist data for a given board
|
70
|
-
.
|
71
|
-
.SS "get\-lists \-\- Get list data for a board"
|
72
|
-
Read all list data for a given board\.
|
73
|
-
.
|
74
|
-
.SH "EXAMPLES"
|
75
|
-
Fetch burndown data of a Trello board configured in the configuration file:
|
76
|
-
.
|
77
|
-
.P
|
78
|
-
\fBtrollolo fetch\-burndown\-data \-\-board\-id=CRdddpdy\fR
|
79
|
-
.
|
80
|
-
.P
|
81
|
-
Fetch raw data of all cards of a Trello board:
|
82
|
-
.
|
83
|
-
.P
|
84
|
-
\fBtrollolo get\-cards \-\-raw \-\-board\-id=CRdddpdy\fR
|
85
|
-
.
|
86
|
-
.SH "CONFIGURATION"
|
87
|
-
Trollolo reads a configuration file \fB\.trollolorc\fR in the home directory of the user running the command line tool\. It reads the data required to authenticate with the Trello server from it\. It\'s two values (the example shows random data):
|
88
|
-
.
|
89
|
-
.IP "" 4
|
90
|
-
.
|
91
|
-
.nf
|
92
|
-
|
93
|
-
developer_public_key: 87349873487ef8732487234
|
94
|
-
member_token: 87345897238957a29835789b2374580927f3589072398579820345
|
95
|
-
.
|
96
|
-
.fi
|
97
|
-
.
|
98
|
-
.IP "" 0
|
99
|
-
.
|
100
|
-
.P
|
101
|
-
These values have to be set with the personal access data for the Trello API and the id of the board, which is processed\.
|
102
|
-
.
|
103
|
-
.P
|
104
|
-
For creating a developer key go to the Developer API Keys \fIhttps://trello\.com/1/appKey/generate\fR page on Trello\. It\'s the key in the first box\.
|
105
|
-
.
|
106
|
-
.P
|
107
|
-
For creating a member token go follow the instructions \fIhttps://trello\.com/docs/gettingstarted/index\.html#getting\-a\-token\-from\-a\-user\fR in the Trello API documentation\.
|
108
|
-
.
|
109
|
-
.P
|
110
|
-
The board id is the cryptic string in the URL of your board\.
|
111
|
-
.
|
112
|
-
.SH "CONVENTIONS FOR SCRUM BOARDS"
|
113
|
-
The burndown functionality expects the board to follow a certain naming scheme, so that Trollolo can process it as a Scrum board\.
|
114
|
-
.
|
115
|
-
.P
|
116
|
-
It expects a list \fBSprint Backlog\fR with open items, a list \fBDoing\fR with items in progress, and a list \fBDone Sprint X\fR with done items, where \fBX\fR is the number of the sprint\. For burndown data calculation the list with the highest number is taken\.
|
117
|
-
.
|
118
|
-
.P
|
119
|
-
On work item cards the tool takes a bracketed number as suffix as size of the item in story points\. E\.g\. a card with the title \fB(3) Build magic tool\fR would have three story points\.
|
120
|
-
.
|
121
|
-
.P
|
122
|
-
Cards under the waterline not part of the actual sprint commitment are expected to have a label with the name "Under waterline"\.
|
123
|
-
.
|
124
|
-
.P
|
125
|
-
An example for a board which follow this conventions is the Trollolo Testing Board \fIhttps://trello\.com/b/CRdddpdy/trollolo\-testing\-board\fR\.
|
126
|
-
.
|
127
|
-
.SH "COPYRIGHT"
|
128
|
-
Trollolo is Copyright (C) 2013\-2014 SUSE LLC
|
data/man/trollolo.1.html
DELETED
@@ -1,219 +0,0 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<html>
|
3
|
-
<head>
|
4
|
-
<meta http-equiv='content-type' value='text/html;charset=utf8'>
|
5
|
-
<meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
|
6
|
-
<title>Trollolo(1) - Trello command line client</title>
|
7
|
-
<style type='text/css' media='all'>
|
8
|
-
/* style: man */
|
9
|
-
body#manpage {margin:0}
|
10
|
-
.mp {max-width:100ex;padding:0 9ex 1ex 4ex}
|
11
|
-
.mp p,.mp pre,.mp ul,.mp ol,.mp dl {margin:0 0 20px 0}
|
12
|
-
.mp h2 {margin:10px 0 0 0}
|
13
|
-
.mp > p,.mp > pre,.mp > ul,.mp > ol,.mp > dl {margin-left:8ex}
|
14
|
-
.mp h3 {margin:0 0 0 4ex}
|
15
|
-
.mp dt {margin:0;clear:left}
|
16
|
-
.mp dt.flush {float:left;width:8ex}
|
17
|
-
.mp dd {margin:0 0 0 9ex}
|
18
|
-
.mp h1,.mp h2,.mp h3,.mp h4 {clear:left}
|
19
|
-
.mp pre {margin-bottom:20px}
|
20
|
-
.mp pre+h2,.mp pre+h3 {margin-top:22px}
|
21
|
-
.mp h2+pre,.mp h3+pre {margin-top:5px}
|
22
|
-
.mp img {display:block;margin:auto}
|
23
|
-
.mp h1.man-title {display:none}
|
24
|
-
.mp,.mp code,.mp pre,.mp tt,.mp kbd,.mp samp,.mp h3,.mp h4 {font-family:monospace;font-size:14px;line-height:1.42857142857143}
|
25
|
-
.mp h2 {font-size:16px;line-height:1.25}
|
26
|
-
.mp h1 {font-size:20px;line-height:2}
|
27
|
-
.mp {text-align:justify;background:#fff}
|
28
|
-
.mp,.mp code,.mp pre,.mp pre code,.mp tt,.mp kbd,.mp samp {color:#131211}
|
29
|
-
.mp h1,.mp h2,.mp h3,.mp h4 {color:#030201}
|
30
|
-
.mp u {text-decoration:underline}
|
31
|
-
.mp code,.mp strong,.mp b {font-weight:bold;color:#131211}
|
32
|
-
.mp em,.mp var {font-style:italic;color:#232221;text-decoration:none}
|
33
|
-
.mp a,.mp a:link,.mp a:hover,.mp a code,.mp a pre,.mp a tt,.mp a kbd,.mp a samp {color:#0000ff}
|
34
|
-
.mp b.man-ref {font-weight:normal;color:#434241}
|
35
|
-
.mp pre {padding:0 4ex}
|
36
|
-
.mp pre code {font-weight:normal;color:#434241}
|
37
|
-
.mp h2+pre,h3+pre {padding-left:0}
|
38
|
-
ol.man-decor,ol.man-decor li {margin:3px 0 10px 0;padding:0;float:left;width:33%;list-style-type:none;text-transform:uppercase;color:#999;letter-spacing:1px}
|
39
|
-
ol.man-decor {width:100%}
|
40
|
-
ol.man-decor li.tl {text-align:left}
|
41
|
-
ol.man-decor li.tc {text-align:center;letter-spacing:4px}
|
42
|
-
ol.man-decor li.tr {text-align:right;float:right}
|
43
|
-
</style>
|
44
|
-
</head>
|
45
|
-
<!--
|
46
|
-
The following styles are deprecated and will be removed at some point:
|
47
|
-
div#man, div#man ol.man, div#man ol.head, div#man ol.man.
|
48
|
-
|
49
|
-
The .man-page, .man-decor, .man-head, .man-foot, .man-title, and
|
50
|
-
.man-navigation should be used instead.
|
51
|
-
-->
|
52
|
-
<body id='manpage'>
|
53
|
-
<div class='mp' id='man'>
|
54
|
-
|
55
|
-
<div class='man-navigation' style='display:none'>
|
56
|
-
<a href="#NAME">NAME</a>
|
57
|
-
<a href="#SYNOPSIS">SYNOPSIS</a>
|
58
|
-
<a href="#DESCRIPTION">DESCRIPTION</a>
|
59
|
-
<a href="#GENERAL-OPTIONS">GENERAL OPTIONS</a>
|
60
|
-
<a href="#COMMANDS">COMMANDS</a>
|
61
|
-
<a href="#EXAMPLES">EXAMPLES</a>
|
62
|
-
<a href="#CONFIGURATION">CONFIGURATION</a>
|
63
|
-
<a href="#CONVENTIONS-FOR-SCRUM-BOARDS">CONVENTIONS FOR SCRUM BOARDS</a>
|
64
|
-
<a href="#COPYRIGHT">COPYRIGHT</a>
|
65
|
-
</div>
|
66
|
-
|
67
|
-
<ol class='man-decor man-head man head'>
|
68
|
-
<li class='tl'>Trollolo(1)</li>
|
69
|
-
<li class='tc'></li>
|
70
|
-
<li class='tr'>Trollolo(1)</li>
|
71
|
-
</ol>
|
72
|
-
|
73
|
-
<h2 id="NAME">NAME</h2>
|
74
|
-
<p class="man-name">
|
75
|
-
<code>Trollolo</code> - <span class="man-whatis">Trello command line client</span>
|
76
|
-
</p>
|
77
|
-
|
78
|
-
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
79
|
-
|
80
|
-
<p><code>trollolo</code> [command] [options]</p>
|
81
|
-
|
82
|
-
<p><code>trollolo</code> help [command]</p>
|
83
|
-
|
84
|
-
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
85
|
-
|
86
|
-
<p><strong>Trollolo</strong> is a command line client for Trello. It supports fetching lists
|
87
|
-
and cards and has functionality for extracting data for burndown charts.</p>
|
88
|
-
|
89
|
-
<h2 id="GENERAL-OPTIONS">GENERAL OPTIONS</h2>
|
90
|
-
|
91
|
-
<dl>
|
92
|
-
<dt><code>--version</code></dt><dd><p>Give out version of trollolo tool. Exit when done.</p></dd>
|
93
|
-
<dt><code>--verbose</code></dt><dd><p>Run in verbose mode.</p></dd>
|
94
|
-
<dt><code>--board-id</code></dt><dd><p>Most commands take a <code>board-id</code> parameter. This is the id of the Trello
|
95
|
-
board. It is the cryptic part of the URL of the Trello board.</p></dd>
|
96
|
-
<dt class="flush"><code>--raw</code></dt><dd><p>Some of the commands take a <code>raw</code> option. If this is provided the commands
|
97
|
-
put out the raw JSON returned by the server instead of processing it to
|
98
|
-
a more human-readable version.</p></dd>
|
99
|
-
</dl>
|
100
|
-
|
101
|
-
|
102
|
-
<h2 id="COMMANDS">COMMANDS</h2>
|
103
|
-
|
104
|
-
<h3 id="burndown-init-Initialize-burndown-chart">burndown-init -- Initialize burndown chart</h3>
|
105
|
-
|
106
|
-
<p><code>trollolo burndown-init --board-id=<board id> --output=<directory></code></p>
|
107
|
-
|
108
|
-
<p>Initialize the given directory for the generation of burndown charts. It stores
|
109
|
-
the given board id in the directory in a YAML file together with other
|
110
|
-
configuration data. The YAML file also is used to store the data for the
|
111
|
-
burndown charts. The <code>burndown</code> command can be used to update the file with
|
112
|
-
data from the specified Trello board.</p>
|
113
|
-
|
114
|
-
<p>The directory also gets a script to do the actual generation of the burndown
|
115
|
-
chart. Just run this script after each update of the data to get the latest
|
116
|
-
burndown chart.</p>
|
117
|
-
|
118
|
-
<h3 id="burndown-Process-data-for-burndown-chart">burndown -- Process data for burndown chart</h3>
|
119
|
-
|
120
|
-
<p><code>trollolo burndown --output=<directory></code></p>
|
121
|
-
|
122
|
-
<p>Update the burndown data in the given directory from the Trello board
|
123
|
-
specified in the YAML file in the directory. The given directory has to be
|
124
|
-
initialized before running the <code>burndown</code> command by running the
|
125
|
-
<code>burndown-init</code> command.</p>
|
126
|
-
|
127
|
-
<p>The actual generation of the burndown chart is done by running the script
|
128
|
-
which is put into the directory by the <code>burndown-init</code> command.</p>
|
129
|
-
|
130
|
-
<p>For correct generation of the burndown chart, the Trello board has to follow
|
131
|
-
a few convention. They are described in the section <code>CONVENTIONS for SCRUM
|
132
|
-
BOARDS</code>.</p>
|
133
|
-
|
134
|
-
<h3 id="fetch-burndown-data-Read-data-for-burndown-chart">fetch-burndown-data -- Read data for burndown chart</h3>
|
135
|
-
|
136
|
-
<p><code>trollolo fetch-burndown-data --board-id=<board id></code></p>
|
137
|
-
|
138
|
-
<p>Reads data from the specified Trello board, extracts it according to the
|
139
|
-
conventions for Scrum boards, and reports burndown data.</p>
|
140
|
-
|
141
|
-
<h3 id="get-cards-Get-card-data-for-a-board">get-cards -- Get card data for a board</h3>
|
142
|
-
|
143
|
-
<p>Read all card data for a given board.</p>
|
144
|
-
|
145
|
-
<h3 id="get-checklists-Get-checklist-data-for-a-board">get-checklists -- Get checklist data for a board</h3>
|
146
|
-
|
147
|
-
<p>Read all checklist data for a given board</p>
|
148
|
-
|
149
|
-
<h3 id="get-lists-Get-list-data-for-a-board">get-lists -- Get list data for a board</h3>
|
150
|
-
|
151
|
-
<p>Read all list data for a given board.</p>
|
152
|
-
|
153
|
-
<h2 id="EXAMPLES">EXAMPLES</h2>
|
154
|
-
|
155
|
-
<p>Fetch burndown data of a Trello board configured in the configuration file:</p>
|
156
|
-
|
157
|
-
<p><code>trollolo fetch-burndown-data --board-id=CRdddpdy</code></p>
|
158
|
-
|
159
|
-
<p>Fetch raw data of all cards of a Trello board:</p>
|
160
|
-
|
161
|
-
<p><code>trollolo get-cards --raw --board-id=CRdddpdy</code></p>
|
162
|
-
|
163
|
-
<h2 id="CONFIGURATION">CONFIGURATION</h2>
|
164
|
-
|
165
|
-
<p>Trollolo reads a configuration file <code>.trollolorc</code> in the home directory of the
|
166
|
-
user running the command line tool. It reads the data required to authenticate
|
167
|
-
with the Trello server from it. It's two values (the example shows random data):</p>
|
168
|
-
|
169
|
-
<pre><code class="yaml">developer_public_key: 87349873487ef8732487234
|
170
|
-
member_token: 87345897238957a29835789b2374580927f3589072398579820345
|
171
|
-
</code></pre>
|
172
|
-
|
173
|
-
<p>These values have to be set with the personal access data for the Trello API
|
174
|
-
and the id of the board, which is processed.</p>
|
175
|
-
|
176
|
-
<p>For creating a developer key go to the
|
177
|
-
<a href="https://trello.com/1/appKey/generate">Developer API Keys</a> page on Trello. It's
|
178
|
-
the key in the first box.</p>
|
179
|
-
|
180
|
-
<p>For creating a member token go follow the
|
181
|
-
<a href="https://trello.com/docs/gettingstarted/index.html#getting-a-token-from-a-user">instructions</a>
|
182
|
-
in the Trello API documentation.</p>
|
183
|
-
|
184
|
-
<p>The board id is the cryptic string in the URL of your board.</p>
|
185
|
-
|
186
|
-
<h2 id="CONVENTIONS-FOR-SCRUM-BOARDS">CONVENTIONS FOR SCRUM BOARDS</h2>
|
187
|
-
|
188
|
-
<p>The burndown functionality expects the board to follow a certain naming scheme,
|
189
|
-
so that Trollolo can process it as a Scrum board.</p>
|
190
|
-
|
191
|
-
<p>It expects a list <code>Sprint Backlog</code> with open items, a list <code>Doing</code> with items in
|
192
|
-
progress, and a list <code>Done Sprint X</code> with done items, where <code>X</code> is the number
|
193
|
-
of the sprint. For burndown data calculation the list with the highest number
|
194
|
-
is taken.</p>
|
195
|
-
|
196
|
-
<p>On work item cards the tool takes a bracketed number as suffix as size of the
|
197
|
-
item in story points. E.g. a card with the title <code>(3) Build magic tool</code> would
|
198
|
-
have three story points.</p>
|
199
|
-
|
200
|
-
<p>Cards under the waterline not part of the actual sprint commitment are expected
|
201
|
-
to have a label with the name "Under waterline".</p>
|
202
|
-
|
203
|
-
<p>An example for a board which follow this conventions is the <a href="https://trello.com/b/CRdddpdy/trollolo-testing-board">Trollolo Testing
|
204
|
-
Board</a>.</p>
|
205
|
-
|
206
|
-
<h2 id="COPYRIGHT">COPYRIGHT</h2>
|
207
|
-
|
208
|
-
<p>Trollolo is Copyright (C) 2013-2014 SUSE LLC</p>
|
209
|
-
|
210
|
-
|
211
|
-
<ol class='man-decor man-foot man foot'>
|
212
|
-
<li class='tl'></li>
|
213
|
-
<li class='tc'>June 2014</li>
|
214
|
-
<li class='tr'>Trollolo(1)</li>
|
215
|
-
</ol>
|
216
|
-
|
217
|
-
</div>
|
218
|
-
</body>
|
219
|
-
</html>
|