class Jekyll::Commands::AirtableData

Public Class Methods

init_with_program(prog) click to toggle source
# File lib/jekyll/airtable_data.rb, line 10
def init_with_program(prog)
  prog.command(:airtable_data) do |c|
    c.action do |args, options|

      @airtable_config = Jekyll.configuration({})['airtable_data']
      @api_key = @airtable_config['api_key']
      @app_id = @airtable_config['app_id']

      @client = Airtable::Client.new("#{@api_key}")

      @airtable_config['tables'].each do |table|

          @table = @client.table("#{@app_id}", "#{table}")
          @records = @table.all(:sort => ["Name", :asc])

          dirname = File.dirname("_data/#{table}")
          unless File.directory?(dirname)
            FileUtils.mkdir_p(dirname)
          end

          File.open(dirname + "/" + table.parameterize + ".json", "w") do |f|
            data = @records.map { |record| record.attributes }
            f.write(data.to_json)
          end

          Jekyll.logger.info "Airable:","Generated _data/#{table.parameterize}.json"

      end

      Jekyll.logger.info "Airtable: Sync Complete!"

    end
  end
end