lionel_richie 0.1.5.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OGRkODE3YzNlNjVkZmUzNWVhZTZjZTdmNzYyYzY0OWUyZmNjYWI2OA==
4
+ NGIyMjk4ZjAwYjc0ZTFhZjU3ZGY1NWY3ZWE5OTcxM2QzZmVlYjIwZg==
5
5
  data.tar.gz: !binary |-
6
- YTBlNWFlNDFjYWY0Y2ZlMzAyNTJhMmIzYTc1OWNmZmVlZTY5M2JmYg==
7
- !binary "U0hBNTEy":
6
+ Mjk0YTljYjNkZDVlNDZlMTMzYTc3MWMyMWE4Nzc4MjNkOGJhOTk0Mg==
7
+ SHA512:
8
8
  metadata.gz: !binary |-
9
- MGViMDI0ZTdiZmI5ZjFkZDA5MmMxMWI2Zjg0MDFhYzNlZDBkMzgyMjU2Yzc1
10
- YmU2MDg4Zjc0NTQxZDI5MTZkYWEzMjZjYzBlOGIzNTBkOWZmZDg3Njc4Mjhm
11
- NWZlYjY3OWIwMWQ0ZDlkMTg5MTAwMWY5OTU4Y2MxNTYyODIwMWM=
9
+ MTg3NmM5ZDMyM2FhOWExNjYxNjEwODY1ZWQzMDQzNDA0ZWQxMzA1Y2M3MWE5
10
+ MzMyYzUyYWE0YTFmNGY3MDQyZGE5ZmQyNTZlMjYzZmNjM2JhYjQ4ZWEyM2U4
11
+ NWMwNDU2MmVlYzQ1OWVkMTczNzY5NjBiYjIwODE0NTUwZDA3NTE=
12
12
  data.tar.gz: !binary |-
13
- YzEyZjNhZWUzMTM2N2M0MjI0YjFjN2NkZjA0YTdkOGYwNTk2NDgyODU3NmQw
14
- ZTVlMjIzMmYwNjM3NjVmMzdiMzZiNzBhN2NhOTdmODI0Y2FjYWE3MjUxZDc5
15
- NDg1NmU5MTY1ZmU3MDJmZTYzN2EzZjhkNzBjYjkyNzhjOTdmY2U=
13
+ ZWNlMDk4YWQyOTZjZTQ1ODc1NzU0YTA4NjBhMDNhYTRjZmYxMjc3MmEzMjMw
14
+ ODRjYWE0MjJiMTEwZWQzNjI2MTk1YTM2MzQwNzk5MDM1YTY0YWU3YjgwZTU0
15
+ NzQ0MzlmNWE4YTc0MDhkZTE2MzkyNmRhMDdkN2FhODBmNTMxNzM=
data/.gitignore CHANGED
@@ -18,3 +18,4 @@ tmp
18
18
  .env
19
19
  .ruby-version
20
20
  .versions.conf
21
+ Lionelfile
data/CHANGELOG.md ADDED
@@ -0,0 +1,12 @@
1
+ # Changelog
2
+
3
+
4
+ 0.2.0 - January 8, 2014
5
+
6
+ * Configurable export
7
+
8
+ 0.1.0 - July 11, 2013
9
+
10
+ * Command line interface
11
+ * Trello and Google integration
12
+ * Initial release
data/README.md CHANGED
@@ -1,10 +1,12 @@
1
1
  # LionelRichie
2
2
 
3
- LionelRichie is a script for exporting Trello data to Google Docs.
3
+ [![Code Climate](https://codeclimate.com/github/rossta/lionel_richie.png)](https://codeclimate.com/github/rossta/lionel_richie)
4
+
5
+ LionelRichie is a script for exporting Trello data to Google Docs.
4
6
 
5
7
  This gem is in its very early stages so its probably not useful to you yet.
6
8
 
7
- ![lionel](https://www.evernote.com/shard/s111/sh/86ca745b-4e7e-4b06-9fd2-32112436c72b/19b422ac7bab8162f9268be34be85b2d/res/03b54478-c928-4732-8d6a-4b56bcc205dc/lionel-richie-trello.jpg?resizeSmall&width=832)
9
+ ![Trello? Is it me you're looking for?](https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRmSbZ56riC_raK-rR4HiV4YKjvXTTUQy4_GCpPAYqdSkCz3RhO)
8
10
 
9
11
  ## Installation
10
12
 
@@ -42,58 +44,61 @@ You'll then be directed to authorize the application and retrieve your google to
42
44
 
43
45
  You should now be ready to run the export:
44
46
 
45
- $ lionel export # uploads to your google doc
46
- $ lionel export --print # prints the output without uploading
47
+ $ lionel export # uploads to your google doc
48
+ $ lionel export --print # prints the output without uploading
49
+ $ lionel export -c ./path/to/Lionelfile # uploads export configured by given Lionelfile
47
50
 
48
51
  When running this command for the first time, you'll be asked to enter your trello board id and google doc id, which you can grab from the respective URLs of those resources.
49
52
 
50
53
  Run `lionel` to see a list of the available commands and options.
51
54
 
52
- ## Crafting the Export (Doesn't exist yet)
55
+ ## Crafting the Export
53
56
 
54
- ```ruby
57
+ The export can be configured using the export DSL. Export methods take the form of a Google doc column, e.g. 'A', 'BC', etc. To set the value on a column, pass a value or a block. The block is rendered in the context of each `Card` object populated with data from Trello.
55
58
 
59
+ ```ruby
60
+ # Lionelfile
56
61
  LionelRichie.export do
57
62
  # Card Id
58
- b { id }
63
+ B { id }
59
64
 
60
65
  # Card Link
61
- c { link }
66
+ C { link }
62
67
 
63
68
  # Ready date
64
- d do
65
- ready_action = card.first_action do |a|
66
- (a.create? && a.board_id == trello_board_id) || a.moved_to?("Ready")
69
+ D do |export|
70
+ ready_action = first_action do |a|
71
+ (a.create? && a.board_id == export.trello_board_id) || a.moved_to?("Ready")
67
72
  end
68
73
  format_date(ready_action.date) if ready_action
69
74
  end
70
75
 
71
76
  # In Progress date
72
- e { date_moved_to("In Progress") }
77
+ E { date_moved_to("In Progress") }
73
78
 
74
79
  # Code Review date
75
- f { date_moved_to("Code Review") }
80
+ F { date_moved_to("Code Review") }
76
81
 
77
82
  # Review date
78
- g { date_moved_to("Review") }
83
+ G { date_moved_to("Review") }
79
84
 
80
85
  # Deploy date
81
- h { date_moved_to("Deploy") }
86
+ H { date_moved_to("Deploy") }
82
87
 
83
88
  # Completed date
84
- i { date_moved_to("Completed") }
89
+ I { date_moved_to("Completed") }
85
90
 
86
91
  # Type
87
- j { type }
92
+ J { type }
88
93
 
89
94
  # Project
90
- k { project }
95
+ K { project }
91
96
 
92
97
  # Estimate
93
- l { estimate }
98
+ L { estimate }
94
99
 
95
100
  # Due Date
96
- m { due_date }
101
+ M { due_date }
97
102
  end
98
103
  ```
99
104
 
data/bin/lionel CHANGED
@@ -19,30 +19,4 @@ def pute(*args)
19
19
  $stderr.puts(*args)
20
20
  end
21
21
 
22
- begin
23
- Lionel::CLI.start(ARGV)
24
-
25
- rescue GoogleDrive::Error, GoogleDrive::AuthenticationError => e
26
- @attempts ||= 0
27
- @attempts += 1
28
- Lionel::GoogleAuthentication.new.refresh
29
- if @attempts < 2
30
- retry
31
- else
32
- puts e.class
33
- puts "-" * e.class.name.size
34
- pute e.message
35
- puts "Unable to access Google Drive"
36
- puts "run 'lionel authorize google'"
37
- end
38
-
39
- rescue Trello::Error, Trello::InvalidAccessToken => e
40
- puts "Unable to access Trello"
41
- puts "run 'lionel authorize trello'"
42
-
43
- rescue StandardError => e
44
- puts e.class
45
- puts "-" * e.class.name.size
46
- pute e.message
47
- raise e
48
- end
22
+ Lionel::CLI.start(ARGV)
@@ -0,0 +1,41 @@
1
+ Lionel.export do
2
+ B { id }
3
+
4
+ # Card link
5
+ C { link(name.gsub(/^\[.*\]\s*/, "")) }
6
+
7
+ # Ready date
8
+ D do |export|
9
+ ready_action = first_action do |a|
10
+ (a.create? && a.board_id == export.trello_board_id) || a.moved_to?("Ready")
11
+ end
12
+ format_date(ready_action.date) if ready_action
13
+ end
14
+
15
+ # In Progress date
16
+ E { date_moved_to("In Progress") }
17
+
18
+ # Code Review date
19
+ F { date_moved_to("Code Review") }
20
+
21
+ # Review date
22
+ G { date_moved_to("Review") }
23
+
24
+ # Deploy date
25
+ H { date_moved_to("Deploy") }
26
+
27
+ # Completed date
28
+ I { date_moved_to("Completed") }
29
+
30
+ # Type
31
+ J { type }
32
+
33
+ # Project
34
+ K { project }
35
+
36
+ # Estimate
37
+ L { estimate }
38
+
39
+ # Due Date
40
+ M { due_date }
41
+ end
data/lib/lionel.rb CHANGED
@@ -4,11 +4,13 @@ require 'google_drive'
4
4
  require 'launchy'
5
5
  require 'thor'
6
6
  require 'logger'
7
+ require 'forwardable'
7
8
  require 'lionel/version'
8
9
  require 'lionel/cli'
9
10
  require 'lionel/configuration'
10
11
  require 'lionel/configurable'
11
12
  require 'lionel/export'
13
+ require 'lionel/export_builder'
12
14
  require 'lionel/proxy_action'
13
15
  require 'lionel/proxy_card'
14
16
  require 'lionel/proxy_worksheet'
@@ -16,6 +18,10 @@ require 'lionel/trello_authentication'
16
18
  require 'lionel/google_authentication'
17
19
 
18
20
  module Lionel
21
+ Error = Class.new(StandardError)
22
+ ColumnNameError = Class.new(Error)
23
+ MissingBuilderError = Class.new(Error)
24
+
19
25
  extend self
20
26
  attr_accessor :logger
21
27
 
@@ -25,6 +31,11 @@ module Lionel
25
31
  end
26
32
  @logger = logger
27
33
  end
34
+
35
+ def export(&block)
36
+ Export.builder = ExportBuilder.build(&block)
37
+ end
38
+
28
39
  end
29
40
 
30
41
  Lionel.logger = Logger.new(STDOUT)
data/lib/lionel/cli.rb CHANGED
@@ -41,9 +41,13 @@ module Lionel
41
41
  method_option "print", :aliases => "-p", :type => :boolean, :default => false, :desc => "Print results instead of saving them to Google Docs."
42
42
  method_option "trello-board-id", :aliases => "-t", :type => :string, :default => nil, :desc => "Specify the source Trello board id."
43
43
  method_option "google-doc-id", :aliases => "-g", :type => :string, :default => nil, :desc => "Specify the target Google doc id."
44
- method_option "save", :aliases => "-c", :type => :string, :default => true, :desc => "Save the command line ids as the default configuration."
44
+ method_option "save", :aliases => "-s", :type => :string, :default => true, :desc => "Save the command line ids as the default configuration."
45
45
  method_option "filter", :aliases => "-f", :type => :string, :default => 'open-lists', :desc => "Possible values: open-cards, open-lists."
46
+ method_option "configuration", :aliases => "-c", :type => :string, :default => nil, :desc => "Path to Lionelfile configuration"
46
47
  def export
48
+ lionel_file = options['configuration'] || './Lionelfile'
49
+ eval(File.read(lionel_file)) if File.exists?(lionel_file)
50
+
47
51
  export = Lionel::Export.new(options)
48
52
 
49
53
  if options['google-doc-id']
@@ -69,10 +73,10 @@ module Lionel
69
73
  if @google_attempts < 2
70
74
  retry
71
75
  else
72
- invoke :authorize, ['google']
76
+ invoke :authorize, ['google'], {}
73
77
  end
74
78
  rescue Trello::Error, Trello::InvalidAccessToken
75
- invoke :authorize, ['trello']
79
+ invoke :authorize, ['trello'], {}
76
80
  end
77
81
 
78
82
  welcome = "Trello? Is it me you're looking for?"
@@ -4,6 +4,7 @@ require 'ostruct'
4
4
  module Lionel
5
5
  class Configuration
6
6
  include Singleton
7
+ extend Forwardable
7
8
  attr_reader :path, :data
8
9
 
9
10
  FILE_NAME = '.lionelrc'
@@ -15,7 +16,7 @@ module Lionel
15
16
  ]
16
17
 
17
18
  def self.config_accessor(*args)
18
- delegate(*args, to: :data)
19
+ def_delegators :data, *args
19
20
 
20
21
  args.each do |accessor|
21
22
  define_method("#{accessor}=") do |value|
data/lib/lionel/export.rb CHANGED
@@ -6,6 +6,14 @@ module Lionel
6
6
 
7
7
  config_accessor :google_doc_id, :trello_board_id
8
8
 
9
+ def self.builder=(builder)
10
+ @builder = builder
11
+ end
12
+
13
+ def self.builder
14
+ @builder || ExportBuilder.default
15
+ end
16
+
9
17
  def initialize(options = {})
10
18
  @options = options
11
19
  end
@@ -48,24 +56,28 @@ module Lionel
48
56
  download
49
57
 
50
58
  if options['print']
51
- rows.each { |row| Lionel.logger.info row.inspect }
59
+ Lionel.logger.info "DRY RUN..."
60
+ Lionel.logger.info "Results were not uploaded to Google Drive"
52
61
  else
62
+ Lionel.logger.info "Uploading..."
53
63
  upload
64
+ Lionel.logger.info "Done!"
54
65
  end
55
66
  end
56
67
 
57
68
  def download
69
+ raise_missing_builder_error unless builder
70
+
58
71
  Lionel.logger.info "Exporting trello board '#{board.name}' (#{trello_board_id}) to " + "google doc '#{spreadsheet.title}' (#{google_doc_id})"
59
72
 
60
73
  card_map.each do |row, card|
61
74
  begin
62
- Timeout.timeout(5) {
63
- Lionel.logger.info "row[#{row}] = #{card.name}"
64
-
65
- sync_columns(card).each do |col, value|
75
+ Timeout.timeout(5) do
76
+ row_data = card_columns(card).map do |col, value|
66
77
  worksheet[col,row] = value
67
- end
68
- }
78
+ end.join(" | ")
79
+ Lionel.logger.info "row[#{row}]: " + row_data
80
+ end
69
81
  rescue Timeout::Error, Trello::Error => e
70
82
  Lionel.logger.warn e.inspect
71
83
  Lionel.logger.warn card.inspect
@@ -85,48 +97,22 @@ module Lionel
85
97
  worksheet.rows
86
98
  end
87
99
 
88
- def sync_columns(card)
89
- {}.tap do |columns|
90
- columns["B"] = card.id
91
-
92
- # Card link
93
- columns["C"] = card.link(card.name.gsub(/^\[.*\]\s*/, ""))
100
+ def builder
101
+ self.class.builder
102
+ end
94
103
 
95
- # Ready date
96
- ready_action = card.first_action do |a|
97
- (a.create? && a.board_id == trello_board_id) || a.moved_to?("Ready")
104
+ def card_columns(card)
105
+ card_column_rows[card.id] ||= {}.tap do |columns|
106
+ builder.columns.each do |col_name, block|
107
+ columns[col_name] = card.instance_exec(self, &block)
98
108
  end
99
- columns["D"] = card.format_date(ready_action.date) if ready_action
100
-
101
- # In Progress date
102
- columns["E"] = card.date_moved_to("In Progress")
103
-
104
- # Code Review date
105
- columns["F"] = card.date_moved_to("Code Review")
106
-
107
- # Review date
108
- columns["G"] = card.date_moved_to("Review")
109
-
110
- # Deploy date
111
- columns["H"] = card.date_moved_to("Deploy")
112
-
113
- # Completed date
114
- columns["I"] = card.date_moved_to("Completed")
115
-
116
- # Type
117
- columns["J"] = card.type
118
-
119
- # Project
120
- columns["K"] = card.project
121
-
122
- # Estimate
123
- columns["L"] = card.estimate
124
-
125
- # Due Date
126
- columns["M"] = card.due_date
127
109
  end
128
110
  end
129
111
 
112
+ def card_column_rows
113
+ @card_column_rows ||= {}
114
+ end
115
+
130
116
  def authenticate
131
117
  return if @authenticated
132
118
  authenticate_trello
@@ -166,6 +152,19 @@ module Lionel
166
152
  end
167
153
  end
168
154
 
155
+ def raise_missing_builder_error
156
+ message = <<-ERROR.gsub(/^ {6}/, '')
157
+ The export is not configured. Example:
158
+
159
+ Lionel.export do
160
+ A { id }
161
+ B { name }
162
+ C { url }
163
+ end
164
+ ERROR
165
+ raise MissingBuilderError.new(message)
166
+ end
167
+
169
168
  class CardMap
170
169
  include Enumerable
171
170
 
@@ -186,10 +185,9 @@ module Lionel
186
185
  private
187
186
 
188
187
  def populate_rows
189
- Lionel.logger.info "Using CardMap!!!!"
190
188
  {}.tap do |card_rows|
191
189
 
192
- start_row = 2
190
+ start_row = 2 # Currently assumes a header column
193
191
  rows = worksheet.size
194
192
 
195
193
  # Find existing rows for current cards
@@ -210,5 +208,6 @@ module Lionel
210
208
  end
211
209
  end
212
210
  end
211
+
213
212
  end
214
213
  end
@@ -0,0 +1,35 @@
1
+ module Lionel
2
+ class ExportBuilder
3
+
4
+ def self.build(&block)
5
+ new.configure(&block)
6
+ end
7
+
8
+ def self.default
9
+ build do
10
+ A { id }
11
+ B { name }
12
+ C { url }
13
+ end
14
+ end
15
+
16
+ def configure(&block)
17
+ instance_eval(&block)
18
+ self
19
+ end
20
+
21
+ def columns
22
+ @columns ||= {}
23
+ end
24
+
25
+ def method_missing(sym, *args, &block)
26
+ column_name = sym.to_s.upcase
27
+ if column_name =~ /\A[A-Z]+\z/
28
+ columns[sym.to_s.upcase] = block_given? ? block : lambda { args.first }
29
+ else
30
+ raise ColumnNameError.new("Method '#{sym}' does not represent a valid Google Spreadsheet column name")
31
+ end
32
+ end
33
+
34
+ end
35
+ end
@@ -25,7 +25,7 @@ module Lionel
25
25
  return false unless refresh_token
26
26
 
27
27
  current_token = OAuth2::AccessToken.from_hash(client,
28
- {:refresh_token => refresh_token, :expires_at => 36000})
28
+ {:refresh_token => refresh_token, :expires_at => 604800}) # 1 week
29
29
  @access_token = current_token.refresh! # returns new access_token
30
30
  end
31
31
 
@@ -1,7 +1,9 @@
1
1
  module Lionel
2
2
  class ProxyAction
3
+ extend Forwardable
4
+
3
5
  attr_reader :action
4
- delegate :data, :type, :date, to: :action
6
+ def_delegators :action, :data, :type, :date
5
7
 
6
8
  def initialize(action)
7
9
  @action = action
@@ -1,7 +1,10 @@
1
1
  module Lionel
2
2
  class ProxyCard
3
+ extend Forwardable
4
+
3
5
  attr_reader :card
4
- delegate :id, :url, :name, :due, to: :card
6
+
7
+ def_delegators :card, :id, :url, :name, :due
5
8
 
6
9
  def initialize(card)
7
10
  @card = card
@@ -51,7 +54,7 @@ module Lionel
51
54
  end
52
55
 
53
56
  def estimate
54
- match = card.name.match(/\[(?<estimate>\w)\]/)
57
+ match = card.name.match(/\[(?<estimate>\w+)\]/)
55
58
  return "" unless match
56
59
  match[:estimate]
57
60
  end
@@ -1,7 +1,9 @@
1
1
  module Lionel
2
2
  class ProxyWorksheet
3
- delegate :rows, :save, to: :worksheet
4
- delegate :size, to: :rows
3
+ extend Forwardable
4
+
5
+ def_delegators :worksheet, :rows, :save
6
+ def_delegators :rows, :size
5
7
 
6
8
  attr_reader :worksheet
7
9
  def initialize(worksheet)
@@ -1,3 +1,3 @@
1
1
  module Lionel
2
- VERSION = "0.1.5.1"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -25,6 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.add_dependency "google_drive"
26
26
  spec.add_dependency "yajl-ruby"
27
27
  spec.add_dependency "thor"
28
+ spec.add_dependency "faraday", "~> 0.8"
28
29
  spec.add_dependency "launchy"
29
30
 
30
31
  spec.add_development_dependency "bundler", "~> 1.3"
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe Lionel::ExportBuilder do
4
+ let(:builder) { described_class.new }
5
+
6
+ describe "configure" do
7
+ it "accepts block for column" do
8
+ builder.configure do
9
+ A { "123" }
10
+ end
11
+
12
+ builder.columns["A"].call.should eq("123")
13
+ end
14
+
15
+ it "accepts hard-coded value" do
16
+ builder.configure do
17
+ A "123"
18
+ end
19
+
20
+ builder.columns["A"].call.should eq("123")
21
+ end
22
+
23
+ it "raises error if not a column name (only letters)" do
24
+ expect { builder.configure { x123 "123" } }.to raise_error(Lionel::ColumnNameError)
25
+ end
26
+ end
27
+ end
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Lionel::Export do
4
-
5
4
  describe "configuration" do
6
5
  before(:each) do
7
6
  subject.trello_board_id = "TRELLO_BOARD_ID"
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe Lionel do
4
+ TestCard = Struct.new(:id, :name, :url)
5
+
6
+ describe "self.export" do
7
+ it "configures the export builder" do
8
+ card = TestCard.new(123, "Testing cards", "http://example.com")
9
+
10
+ Lionel.export do
11
+ A { id }
12
+ B { name }
13
+ C { url }
14
+ end
15
+
16
+ builder = Lionel::Export.builder
17
+
18
+ card.instance_eval(&builder.columns["A"]).should eq(123)
19
+ card.instance_eval(&builder.columns["B"]).should eq("Testing cards")
20
+ card.instance_eval(&builder.columns["C"]).should eq("http://example.com")
21
+ end
22
+ end
23
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lionel_richie
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ross Kaffenberger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-30 00:00:00.000000000 Z
11
+ date: 2014-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-trello
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ! '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: faraday
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: '0.8'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: '0.8'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: launchy
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -132,17 +146,20 @@ extra_rdoc_files: []
132
146
  files:
133
147
  - .gitignore
134
148
  - .rspec
149
+ - CHANGELOG.md
135
150
  - Gemfile
136
151
  - Guardfile
137
152
  - LICENSE.txt
138
153
  - README.md
139
154
  - Rakefile
140
155
  - bin/lionel
156
+ - examples/Lionelfile.kanban.rb
141
157
  - lib/lionel.rb
142
158
  - lib/lionel/cli.rb
143
159
  - lib/lionel/configurable.rb
144
160
  - lib/lionel/configuration.rb
145
161
  - lib/lionel/export.rb
162
+ - lib/lionel/export_builder.rb
146
163
  - lib/lionel/google_authentication.rb
147
164
  - lib/lionel/proxy_action.rb
148
165
  - lib/lionel/proxy_card.rb
@@ -152,9 +169,11 @@ files:
152
169
  - lib/lionel_richie.rb
153
170
  - lionel_richie.gemspec
154
171
  - script/console
172
+ - spec/lib/lionel/export_builder_spec.rb
155
173
  - spec/lib/lionel/export_spec.rb
156
174
  - spec/lib/lionel/google_authentication_spec.rb
157
175
  - spec/lib/lionel/trello_authentication_spec.rb
176
+ - spec/lib/lionel_spec.rb
158
177
  - spec/spec_helper.rb
159
178
  homepage: ''
160
179
  licenses:
@@ -176,12 +195,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
176
195
  version: '0'
177
196
  requirements: []
178
197
  rubyforge_project:
179
- rubygems_version: 2.0.5
198
+ rubygems_version: 2.1.11
180
199
  signing_key:
181
200
  specification_version: 4
182
201
  summary: Export Trello to Google Docs
183
202
  test_files:
203
+ - spec/lib/lionel/export_builder_spec.rb
184
204
  - spec/lib/lionel/export_spec.rb
185
205
  - spec/lib/lionel/google_authentication_spec.rb
186
206
  - spec/lib/lionel/trello_authentication_spec.rb
207
+ - spec/lib/lionel_spec.rb
187
208
  - spec/spec_helper.rb