class Lionel::Export
Attributes
options[R]
Public Class Methods
builder()
click to toggle source
# File lib/lionel/export.rb, line 13 def self.builder @builder || ExportBuilder.default end
builder=(builder)
click to toggle source
# File lib/lionel/export.rb, line 9 def self.builder=(builder) @builder = builder end
new(options = {})
click to toggle source
# File lib/lionel/export.rb, line 17 def initialize(options = {}) @options = options end
Public Instance Methods
authenticate()
click to toggle source
# File lib/lionel/export.rb, line 116 def authenticate return if @authenticated authenticate_trello authenticate_google @authenticated end
authenticate_google()
click to toggle source
# File lib/lionel/export.rb, line 128 def authenticate_google google_session @worksheet = Lionel::ProxyWorksheet.new(spreadsheet.worksheets[0]) end
authenticate_trello()
click to toggle source
# File lib/lionel/export.rb, line 123 def authenticate_trello trello_session.configure @board = Trello::Board.find(trello_board_id) end
board()
click to toggle source
# File lib/lionel/export.rb, line 28 def board @board ||= Trello::Board.find(trello_board_id) end
builder()
click to toggle source
# File lib/lionel/export.rb, line 100 def builder self.class.builder end
card_column_rows()
click to toggle source
# File lib/lionel/export.rb, line 112 def card_column_rows @card_column_rows ||= {} end
card_columns(card)
click to toggle source
# File lib/lionel/export.rb, line 104 def card_columns(card) card_column_rows[card.id] ||= {}.tap do |columns| builder.columns.each do |col_name, block| columns[col_name] = card.instance_exec(self, &block) end end end
card_map()
click to toggle source
# File lib/lionel/export.rb, line 88 def card_map @card_map ||= CardMap.new(cards, worksheet) end
cards()
click to toggle source
# File lib/lionel/export.rb, line 32 def cards # iterate over active lists rather # than retrieving all historical cards; # trello api returns association proxy # that does not respond to "flatten" @cards ||= begin case options.fetch('filter', 'open-lists') when 'open-cards' retrieve_open_cards when 'open-lists' retrieve_open_cards_in_open_lists end.map { |c| Lionel::ProxyCard.new(c) } end end
data()
click to toggle source
# File lib/lionel/export.rb, line 21 def data { trello_board_id: trello_board_id, google_doc_id: google_doc_id } end
download()
click to toggle source
# File lib/lionel/export.rb, line 68 def download raise_missing_builder_error unless builder Lionel.logger.info "Exporting trello board '#{board.name}' (#{trello_board_id}) to " + "google doc '#{spreadsheet.title}' (#{google_doc_id})" card_map.each do |row, card| begin Timeout.timeout(5) do row_data = card_columns(card).map do |col, value| worksheet[col,row] = value end.join(" | ") Lionel.logger.info "row[#{row}]: " + row_data end rescue Timeout::Error, Trello::Error => e Lionel.logger.warn e.inspect Lionel.logger.warn card.inspect end end end
google_session()
click to toggle source
# File lib/lionel/export.rb, line 133 def google_session @google_session ||= GoogleDrive.login_with_oauth(configuration.google_token) end
process()
click to toggle source
# File lib/lionel/export.rb, line 55 def process download if options['print'] Lionel.logger.info "DRY RUN..." Lionel.logger.info "Results were not uploaded to Google Drive" else Lionel.logger.info "Uploading..." upload Lionel.logger.info "Done!" end end
raise_missing_builder_error()
click to toggle source
# File lib/lionel/export.rb, line 155 def raise_missing_builder_error message = <<-ERROR.gsub(/^ {6}/, '') The export is not configured. Example: Lionel.export do A { id } B { name } C { url } end ERROR raise MissingBuilderError.new(message) end
retrieve_open_cards()
click to toggle source
# File lib/lionel/export.rb, line 141 def retrieve_open_cards board.cards(filter: :open) end
retrieve_open_cards_in_open_lists()
click to toggle source
# File lib/lionel/export.rb, line 145 def retrieve_open_cards_in_open_lists [].tap do |c| board.lists(filter: :open).each do |list| list.cards(filter: :open).each do |card| c << card end end end end
rows()
click to toggle source
# File lib/lionel/export.rb, line 96 def rows worksheet.rows end
spreadsheet()
click to toggle source
# File lib/lionel/export.rb, line 47 def spreadsheet @spreadsheet ||= google_session.spreadsheet_by_key(google_doc_id) end
trello_session()
click to toggle source
# File lib/lionel/export.rb, line 137 def trello_session @trello_session ||= TrelloAuthentication.new end
upload()
click to toggle source
# File lib/lionel/export.rb, line 92 def upload worksheet.save end
worksheet()
click to toggle source
# File lib/lionel/export.rb, line 51 def worksheet @worksheet ||= get_worksheet end