Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/chenrui333/rules_avro
🍃 bazel rules for generating code from avro schemas
https://github.com/chenrui333/rules_avro
avro bazel bazel-rules
Last synced: about 2 months ago
JSON representation
🍃 bazel rules for generating code from avro schemas
- Host: GitHub
- URL: https://github.com/chenrui333/rules_avro
- Owner: chenrui333
- License: mit
- Created: 2017-05-15T06:33:29.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-12-06T10:41:38.000Z (about 2 months ago)
- Last Synced: 2024-12-08T22:42:21.602Z (about 2 months ago)
- Topics: avro, bazel, bazel-rules
- Language: Starlark
- Homepage:
- Size: 61.5 KB
- Stars: 14
- Watchers: 71
- Forks: 30
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# bazel avro rules
[![Build Status](https://travis-ci.org/chenrui333/rules_avro.svg?branch=master)](https://travis-ci.org/chenrui333/rules_avro)
> [Bazel](https://bazel.build/) rules for generating java sources and libraries from [avro](https://avro.apache.org/) schemas
## Rules
- [Rules](#rules)
- [Getting started](#getting-started)
- [avro_gen](#avro_gen)
- [avro_java_library](#avro_java_library)## Getting started
To use the Avro rules, add the following to your projects `WORKSPACE` file
```python
# rules_avro depends on rules_jvm_external: https://github.com/bazelbuild/rules_jvm_external
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")RULES_JVM_EXTERNAL_TAG = "4.1"
RULES_JVM_EXTERNAL_SHA = "f36441aa876c4f6427bfb2d1f2d723b48e9d930b62662bf723ddfb8fc80f0140"http_archive(
name = "rules_jvm_external",
sha256 = RULES_JVM_EXTERNAL_SHA,
strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG,
url = "https://github.com/bazelbuild/rules_jvm_external/archive/%s.zip" % RULES_JVM_EXTERNAL_TAG,
)RULES_AVRO_VERSION = "96670d5c4a0a3e0f25f4177336e1fa94eba8be5a"
RULES_AVRO_SHA256 = "3bd69872ec72904e843762f7b3532fd1125215503a635a24f6c8037c75b299bc"http_archive(
name = "io_bazel_rules_avro",
strip_prefix = "rules_avro-%s" % RULES_AVRO_VERSION,
url = "https://github.com/chenrui333/rules_avro/archive/%s.tar.gz" % RULES_AVRO_VERSION,
sha256 = RULES_AVRO_SHA256
)load("@io_bazel_rules_avro//avro:avro.bzl", "avro_repositories")
avro_repositories()
# or specify a version
avro_repositories(version = "1.9.1")
```Then in your `BUILD` file, just add the following so the rules will be available:
```python
load("@io_bazel_rules_avro//avro:avro.bzl", "avro_gen", "avro_java_library")
```## avro_gen
```python
avro_gen(name, srcs, strings, encoding)
```Generates `.srcjar` containing generated `.java` source files from a collection of `.avsc` schemas
Attributes
name
Name, required
A unique name for this rule.
srcs
List of labels, required
List of.avsc
files used as inputs for code generation
strings
Boolean, optional
use
java.lang.String
instead ofUtf8
.
encoding
String, optional
set the encoding of output files.
avro_tools
Label, optional
Label to the runnable Avro tools jar. Default, uses the tools jar associated with the downloaded avro
version via `avro_repository`
## avro_java_library
```python
avro_java_library(name, srcs, strings, encoding)
```Same as above except
* instead of `avro_tools`, provide `avro_libs` as a dict(core, tools) of Labels for the avro libraries.
* See tests for an example the re-uses the downloaded library explicitly
* the outputs include those provided by `java_library` rules.