pivotalprinter 0.1.8 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
1
  *.swp
2
2
  pkg
3
3
  Gemfile.lock
4
+ .rvmrc
@@ -15,7 +15,7 @@ module Pivotalprinter
15
15
  class Printer
16
16
  def run
17
17
  opts = parse_options
18
- yaml = load_yaml_config
18
+ yaml = load_yaml_config
19
19
  project,token = extract_config(opts, yaml)
20
20
  Pivotalprinter::Client.project = project
21
21
  Pivotalprinter::Client.token = token
@@ -26,7 +26,7 @@ module Pivotalprinter
26
26
  else Pivotalprinter::Iteration.open('current').stories
27
27
  end
28
28
  generate_output
29
- rescue ConfigNeeded
29
+ rescue ConfigNeeded
30
30
  print_config
31
31
  rescue TokenMissing
32
32
  Trollop::die :token, "token must be specified through config file or explicitly"
@@ -37,18 +37,18 @@ module Pivotalprinter
37
37
  puts "[!] There was an error while generating the PDF file... What happened was:".white.on_red
38
38
  raise
39
39
  end
40
-
40
+
41
41
  def print_config
42
42
  puts %{---\ndefault: &default\n token: "YOUR TOKEN HERE"\n project: 123\n\nsome_project:\n <<: *default # so you don't need to rewrite the token\n project: 789}
43
43
  end
44
-
44
+
45
45
  def parse_options
46
46
  opts = Trollop::options do
47
47
  version "pivotalprinter #{Pivotalprinter::VERSION} (c) 2010#{(year = Time.now.year) > 2010 ? "-#{year}" : ''} pkw.de"
48
48
  banner <<-EOS
49
49
  Pivotalprinter is an awesome program to print stories from the PivotalTracker.
50
50
 
51
- Useage:
51
+ Usage:
52
52
  pivotalprinter [-p PROJECT] [-t TOKEN] [current|backlog|done|STORY]
53
53
  pivotalprinter --config > ~/.pivotalprinterrc
54
54
 
@@ -58,15 +58,15 @@ EOS
58
58
  opt :token, "Pivotaltracker Token", :short => "-t", :type => :string
59
59
  opt :config, "show example configuration", :short => "-c"
60
60
  end
61
-
61
+
62
62
  raise ConfigNeeded if opts[:config]
63
63
  opts
64
64
  end
65
-
65
+
66
66
  def load_yaml_config
67
67
  File.exist?("#{ENV["HOME"]}/.pivotalprinterrc") ? YAML::load_file("#{ENV["HOME"]}/.pivotalprinterrc") : {}
68
68
  end
69
-
69
+
70
70
  def extract_config(opts, yaml)
71
71
  if opts[:project].nil? && yaml.key?("default")
72
72
  return yaml["default"]["project"], yaml["default"]["token"]
@@ -78,7 +78,7 @@ EOS
78
78
  raise ProjectMissing
79
79
  end
80
80
  end
81
-
81
+
82
82
  def generate_output
83
83
  Prawn::Document.generate("/tmp/stories.pdf", :page_layout => :landscape, :margin => [25, 25, 50, 25], :page_size => 'A4') do |pdf|
84
84
  @num_cards_on_page = 0
@@ -97,7 +97,7 @@ EOS
97
97
  pdf.define_grid(:columns => 2, :rows => 2, :gutter => 42)
98
98
  # pdf.grid.show_all
99
99
 
100
- row = (@num_cards_on_page+1) / 4
100
+ row = (@num_cards_on_page + 1) / 4
101
101
  column = i % 2
102
102
  padding = 12
103
103
  cell = pdf.grid( row, column )
@@ -105,25 +105,41 @@ EOS
105
105
 
106
106
  pdf.stroke_color = "666666"
107
107
  pdf.stroke_bounds
108
-
109
- pdf.text_box story.name, :size => 14, :height => 50, :overflow => :truncate, :width => cell.width-(padding*2)-50, :at => [pdf.bounds.left+padding+50, pdf.bounds.top-padding]
110
- pdf.text_box story.description, :size => 8, :overflow => :truncate, :width => cell.width-(padding*2), :height => cell.height-(padding*7), :at => [pdf.bounds.left+padding, pdf.bounds.top-padding-55]
111
- pdf.text_box "ID #{story.id}", :size => 8, :at => [pdf.bounds.left, pdf.bounds.bottom+padding], :align => :right
112
- pdf.text_box story.created_at.strftime('%F'), :size => 8, :at => [pdf.bounds.left, pdf.bounds.bottom+padding], :align => :left
108
+
109
+ pdf.text_box story.name, :size => 14, :height => 50, :overflow => :truncate,
110
+ :width => cell.width - (padding * 2) - 50,
111
+ :at => [pdf.bounds.left + padding + 50, pdf.bounds.top - padding]
112
+
113
+ pdf.text_box story.description, :size => 8, :overflow => :truncate,
114
+ :width => cell.width - ( padding * 2), :height => cell.height - (padding * 7),
115
+ :at => [pdf.bounds.left + padding, pdf.bounds.top - padding - 55]
116
+
117
+ pdf.text_box "Created at: #{story.created_at.strftime('%F')}", :size => 8,
118
+ :at => [pdf.bounds.left + padding, pdf.bounds.bottom + padding]
119
+
120
+ pdf.text_box "ID: #{story.id}", :size => 8,
121
+ :at => [pdf.bounds.left + 110, pdf.bounds.bottom + padding]
122
+
123
+ pdf.text_box "State: #{story.current_state}", :size => 8,
124
+ :at => [pdf.bounds.left + 170, pdf.bounds.bottom + padding]
125
+
126
+ pdf.text_box "Requester: #{story.requested_by}", :size => 8,
127
+ :at => [pdf.bounds.left + 240, pdf.bounds.bottom + padding]
128
+
113
129
 
114
130
  x, y = 32, 205
115
- if story.story_type=="feature"
131
+ if story.story_type == "feature"
116
132
  pdf.fill_color story.points_background
117
- pdf.fill_circle [x,y], 25
133
+ pdf.fill_circle [x, y], 25
118
134
  pdf.font_size = 36
119
135
  pdf.font "Helvetica", :style => :bold
120
136
  pdf.fill_color 'ffffff'
121
- pdf.draw_text "#{story.points}", :at => [x-10, y-12]
137
+ pdf.draw_text "#{story.points}", :at => [x - 10, y - 12]
122
138
  pdf.fill_color '000000'
123
139
  pdf.font_size = 14
124
140
  pdf.font "#{Prawn::BASEDIR}/data/fonts/DejaVuSans.ttf", :style => :normal
125
141
  else
126
- pdf.image open("#{File.dirname(__FILE__)}/../images/#{story.story_type}.png"), :position => 5, :vposition => 5
142
+ pdf.image open("#{File.dirname(__FILE__)}/../images/#{story.story_type}.png"), :position => 5, :vposition => 5
127
143
  end
128
144
  end
129
145
  end
@@ -7,10 +7,9 @@ module Pivotalprinter
7
7
  require 'term/ansicolor'
8
8
  require 'prawn'
9
9
  require 'prawn/layout/grid'
10
- require 'spruz/xt/full'
10
+ require 'tins/xt/full'
11
11
  require 'trollop'
12
12
  require 'yaml'
13
- require "rubygems"
14
13
  require "open-uri"
15
14
  require "nokogiri"
16
15
  require "pivotalprinter/client"
@@ -1,3 +1,3 @@
1
1
  module Pivotalprinter
2
- VERSION = '0.1.8'
2
+ VERSION = '0.2.0'
3
3
  end
@@ -11,16 +11,17 @@ Gem::Specification.new do |s|
11
11
  s.homepage = "http://pkw.de"
12
12
  s.summary = %q{Story printer for pivotaltracker}
13
13
  s.description = %q{Generate nice story cards from pivotaltracker.}
14
-
14
+
15
15
  s.files = `git ls-files`.split("\n")
16
16
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
17
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
18
  s.require_paths = ["lib"]
19
-
20
- s.add_dependency('term-ansicolor','>= 0.4.4')
21
- s.add_dependency('prawn','~>0.11.1')
22
- s.add_dependency('spruz','>= 0.2.0')
23
- s.add_dependency('trollop','>= 1.16.2')
24
- s.add_dependency('nokogiri','>= 1.4.4')
19
+
20
+ s.add_dependency('term-ansicolor')
21
+ s.add_dependency('prawn')
22
+ s.add_dependency('tins')
23
+ s.add_dependency('trollop')
24
+ s.add_dependency('nokogiri')
25
25
  s.add_development_dependency('rake')
26
+ s.add_development_dependency('pry')
26
27
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pivotalprinter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,66 +9,107 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-10-25 00:00:00.000000000 Z
12
+ date: 2012-11-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: term-ansicolor
16
- requirement: &2157499160 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: 0.4.4
21
+ version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2157499160
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: prawn
27
- requirement: &2157498640 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
- - - ~>
35
+ - - ! '>='
31
36
  - !ruby/object:Gem::Version
32
- version: 0.11.1
37
+ version: '0'
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *2157498640
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  - !ruby/object:Gem::Dependency
37
- name: spruz
38
- requirement: &2157498180 !ruby/object:Gem::Requirement
47
+ name: tins
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
42
52
  - !ruby/object:Gem::Version
43
- version: 0.2.0
53
+ version: '0'
44
54
  type: :runtime
45
55
  prerelease: false
46
- version_requirements: *2157498180
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: trollop
49
- requirement: &2157497720 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ! '>='
53
68
  - !ruby/object:Gem::Version
54
- version: 1.16.2
69
+ version: '0'
55
70
  type: :runtime
56
71
  prerelease: false
57
- version_requirements: *2157497720
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: nokogiri
60
- requirement: &2157497260 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ! '>='
64
84
  - !ruby/object:Gem::Version
65
- version: 1.4.4
85
+ version: '0'
66
86
  type: :runtime
67
87
  prerelease: false
68
- version_requirements: *2157497260
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
69
94
  - !ruby/object:Gem::Dependency
70
95
  name: rake
71
- requirement: &2157496860 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: pry
112
+ requirement: !ruby/object:Gem::Requirement
72
113
  none: false
73
114
  requirements:
74
115
  - - ! '>='
@@ -76,7 +117,12 @@ dependencies:
76
117
  version: '0'
77
118
  type: :development
78
119
  prerelease: false
79
- version_requirements: *2157496860
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
80
126
  description: Generate nice story cards from pivotaltracker.
81
127
  email:
82
128
  - dev@pkw.de
@@ -123,7 +169,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
123
169
  version: '0'
124
170
  segments:
125
171
  - 0
126
- hash: 2423194670009355441
172
+ hash: 3495001522045933990
127
173
  required_rubygems_version: !ruby/object:Gem::Requirement
128
174
  none: false
129
175
  requirements:
@@ -132,10 +178,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
178
  version: '0'
133
179
  segments:
134
180
  - 0
135
- hash: 2423194670009355441
181
+ hash: 3495001522045933990
136
182
  requirements: []
137
183
  rubyforge_project:
138
- rubygems_version: 1.8.10
184
+ rubygems_version: 1.8.24
139
185
  signing_key:
140
186
  specification_version: 3
141
187
  summary: Story printer for pivotaltracker