Sha256: 7ffa1302e45b67c99230712d8cdde27b92b5bb7003a5675a2060d0a9d7ecdcf8
Contents?: true
Size: 1.72 KB
Versions: 1
Compression:
Stored size: 1.72 KB
Contents
# largely from https://github.com/aki017/slack-ruby-gem require 'json-schema' require 'erubis' namespace :slack do namespace :web do namespace :api do # update slack-api-ref from https://github.com/dblock/slack-api-ref task :git_update do sh 'git submodule update --init --recursive' sh 'git submodule foreach git pull origin master' end desc 'Update API.' task update: [:git_update] do method_schema = JSON.parse(File.read('lib/slack/web/api/schema/method.json')) data = Dir.glob('lib/slack/web/api/slack-api-ref/methods/*.json').each_with_object({}) do |path, result| name = File.basename(path, '.json') prefix, name = name.split('.') result[prefix] ||= {} parsed = JSON.parse(File.read(path)) JSON::Validator.validate(method_schema, parsed, insert_defaults: true) result[prefix][name] = parsed end method_template = Erubis::Eruby.new(File.read('lib/slack/web/api/templates/method.erb')) data.each_with_index do |(group, names), index| printf "%2d/%2d %10s %s\n", index, data.size, group, names.keys rendered = method_template.result(group: group, names: names) File.write "lib/slack/web/api/endpoints/#{group}.rb", rendered Dir.glob("lib/slack/web/api/patches/#{group}*.patch").sort.each do |patch| puts "- patching #{patch}" system("git apply #{patch}") || fail('failed to apply patch') end end endpoints_template = Erubis::Eruby.new(File.read('lib/slack/web/api/templates/endpoints.erb')) File.write 'lib/slack/web/api/endpoints.rb', endpoints_template.result(files: data.keys) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
slack-ruby-client-0.4.0 | lib/slack/web/api/tasks/generate.rake |