avro-builder 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +29 -0
- data/lib/avro/builder/railtie.rb +14 -0
- data/lib/avro/builder/rake/avro_generate_task.rb +47 -0
- data/lib/avro/builder/rake/rails_avro_generate_task.rake +2 -0
- data/lib/avro/builder/version.rb +1 -1
- data/lib/avro/builder.rb +2 -0
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ce24d8f81a853345491ca01f3f152bea7c322e6
|
4
|
+
data.tar.gz: 699ae7ae471b75260c8975e9762648c4dfaeed03
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0a45f164f8639364362fb34546c29ee79a6e352058c14e766958aee088a7e5ffd5bb56cdf9cc5e9986ba277407a45115e2a12bb8508a04aa36442080a7bee7d2
|
7
|
+
data.tar.gz: 373081fd2648cadfb035bde881e14c71cd69c30d1feb350cf6ff0a831851167cbb24279316520740609bb77cc9d59a1616796309aff2618bf27f5dc51d6ac166
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# avro-builder changelog
|
2
2
|
|
3
|
+
## v0.9.0
|
4
|
+
- Add rake task to generate Avro JSON schema files for all DSL files under a
|
5
|
+
configurable root directory.
|
6
|
+
- Add Railtie to configure `#{Rails.root}/avro/dsl` as a load path, and define
|
7
|
+
`avro:generate` rake task.
|
8
|
+
|
3
9
|
## v0.8.0
|
4
10
|
- Add `Avro::Builder::SchemaStore` to load DSL files and return schema objects.
|
5
11
|
|
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# Avro::Builder
|
2
2
|
|
3
3
|
[][travis]
|
4
|
+
[](https://badge.fury.io/rb/avro-builder)
|
4
5
|
|
5
6
|
[travis]: http://travis-ci.org/salsify/avro-builder
|
6
7
|
|
@@ -48,6 +49,14 @@ Or install it yourself as:
|
|
48
49
|
|
49
50
|
$ gem install avro-builder
|
50
51
|
|
52
|
+
## Railtie
|
53
|
+
|
54
|
+
When included in a Rails project, `#{Rails.root}/avro/dsl` is configured as a
|
55
|
+
load path for the DSL.
|
56
|
+
|
57
|
+
A [rake task](#avro-generate-rake-task) is also defined for generating Avro JSON
|
58
|
+
schemas from the DSL.
|
59
|
+
|
51
60
|
## Usage
|
52
61
|
|
53
62
|
To use `Avro::Builder`, define a schema:
|
@@ -276,6 +285,26 @@ Avromatic.configure do |config|
|
|
276
285
|
end
|
277
286
|
```
|
278
287
|
|
288
|
+
### Avro Generate Rake Task
|
289
|
+
|
290
|
+
There is a rake task that can be used to generate Avro schemas from all DSL
|
291
|
+
files.
|
292
|
+
|
293
|
+
A rake task is automatically defined via a Railtie for Rails projects that uses
|
294
|
+
`#{Rails.root}/avro/dsl` as the root for Avro DSL files.
|
295
|
+
|
296
|
+
Custom rake tasks can also be defined:
|
297
|
+
|
298
|
+
```ruby
|
299
|
+
require 'avro/builder/rake/avro_generate_task'
|
300
|
+
Avro::Builder::Rake::AvroGenerateTask.new(name: :custom_gen,
|
301
|
+
dependencies: [:load_app]) do |task|
|
302
|
+
task.root = '/path/to/dsl/files'
|
303
|
+
task.load_paths << '/additional/dsl/files'
|
304
|
+
end
|
305
|
+
)
|
306
|
+
```
|
307
|
+
|
279
308
|
## Development
|
280
309
|
|
281
310
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Avro
|
2
|
+
module Builder
|
3
|
+
class Railtie < Rails::Railtie
|
4
|
+
|
5
|
+
initializer 'salsify_avro.avro_builder_load_path' do
|
6
|
+
Avro::Builder.add_load_path("#{Rails.root}/avro/dsl")
|
7
|
+
end
|
8
|
+
|
9
|
+
rake_tasks do
|
10
|
+
load File.expand_path('../rake/rails_avro_generate_task.rake', __FILE__)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'rake/tasklib'
|
2
|
+
require 'avro/builder'
|
3
|
+
|
4
|
+
module Avro
|
5
|
+
module Builder
|
6
|
+
module Rake
|
7
|
+
class AvroGenerateTask < ::Rake::TaskLib
|
8
|
+
|
9
|
+
attr_accessor :name, :task_namespace, :task_desc, :root,
|
10
|
+
:load_paths, :dependencies
|
11
|
+
|
12
|
+
def initialize(name: :generate, dependencies: [])
|
13
|
+
@name = name
|
14
|
+
@task_namespace = :avro
|
15
|
+
@task_desc = 'Generate Avro schema files from Avro::Builder DSL'
|
16
|
+
@load_paths = []
|
17
|
+
@root = "#{Rails.root}/avro/dsl" if defined?(Rails)
|
18
|
+
@dependencies = dependencies
|
19
|
+
|
20
|
+
yield self if block_given?
|
21
|
+
|
22
|
+
define
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
# Define the rake task
|
28
|
+
def define
|
29
|
+
namespace task_namespace do
|
30
|
+
desc task_desc
|
31
|
+
task(name.to_sym => dependencies) do
|
32
|
+
raise '"root" must be specified for Avro DSL files' unless root
|
33
|
+
Avro::Builder.add_load_path(*[root, load_paths].flatten)
|
34
|
+
Dir["#{root}/**/*.rb"].each do |dsl_file|
|
35
|
+
puts "Generating Avro schema from #{dsl_file}"
|
36
|
+
output_file = dsl_file.sub('/dsl/', '/schema/').sub(/\.rb$/, '.avsc')
|
37
|
+
schema = Avro::Builder.build(File.read(dsl_file))
|
38
|
+
FileUtils.mkdir_p(File.dirname(output_file))
|
39
|
+
File.write(output_file, schema.end_with?("\n") ? schema : schema << "\n")
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/avro/builder/version.rb
CHANGED
data/lib/avro/builder.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: avro-builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Salsify Engineering
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-08-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: avro
|
@@ -155,6 +155,9 @@ files:
|
|
155
155
|
- lib/avro/builder/file_handler.rb
|
156
156
|
- lib/avro/builder/fixed.rb
|
157
157
|
- lib/avro/builder/namespaceable.rb
|
158
|
+
- lib/avro/builder/railtie.rb
|
159
|
+
- lib/avro/builder/rake/avro_generate_task.rb
|
160
|
+
- lib/avro/builder/rake/rails_avro_generate_task.rake
|
158
161
|
- lib/avro/builder/record.rb
|
159
162
|
- lib/avro/builder/schema_serializer_reference_state.rb
|
160
163
|
- lib/avro/builder/schema_store.rb
|
@@ -194,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
194
197
|
version: '0'
|
195
198
|
requirements: []
|
196
199
|
rubyforge_project:
|
197
|
-
rubygems_version: 2.
|
200
|
+
rubygems_version: 2.6.6
|
198
201
|
signing_key:
|
199
202
|
specification_version: 4
|
200
203
|
summary: Ruby DSL to create Avro schemas
|