Sha256: c0c2c482251336d09d3324ba1e255584a5e2c4f5b898148ccc2334ec69d711c0
Contents?: true
Size: 1.49 KB
Versions: 2
Compression:
Stored size: 1.49 KB
Contents
require 'rake/tasklib' require 'avro/builder' module Avro module Builder module Rake class AvroGenerateTask < ::Rake::TaskLib attr_accessor :name, :task_namespace, :task_desc, :root, :load_paths, :dependencies, :filetype def initialize(name: :generate, dependencies: []) @name = name @task_namespace = :avro @task_desc = 'Generate Avro schema files from Avro::Builder DSL' @load_paths = [] @root = "#{Rails.root}/avro/dsl" if defined?(Rails) @dependencies = dependencies @filetype = 'avsc' yield self if block_given? define end private # Define the rake task def define namespace task_namespace do desc task_desc task(name.to_sym => dependencies) do raise '"root" must be specified for Avro DSL files' unless root Avro::Builder.add_load_path(*[root, load_paths].flatten) Dir["#{root}/**/*.rb"].each do |dsl_file| puts "Generating Avro schema from #{dsl_file}" output_file = dsl_file.sub('/dsl/', '/schema/').sub(/\.rb$/, ".#{filetype}") schema = Avro::Builder.build(filename: dsl_file) FileUtils.mkdir_p(File.dirname(output_file)) File.write(output_file, schema.end_with?("\n") ? schema : schema << "\n") end end end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
avro-builder-0.14.1 | lib/avro/builder/rake/avro_generate_task.rb |
avro-builder-0.14.0 | lib/avro/builder/rake/avro_generate_task.rb |