10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
# 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
|