UNPKG

@namaste/kafka-schema-registry-cli

Version:

Utility app for registering schemas in Confluent Schema Registry

125 lines (93 loc) 3.16 kB
# @namaste/kafka-schema-registry-client A small utility CLI that allows publishing schemas to the Confluent Kafka Schema Registry. Internally, it uses `@namaste/kafka-schema-registry-client` to communicate with the server. ## Installation Install the package globally on the machine that you want to register schemas from: ```bash npm i -g @namaste/kafka-schema-registry-cli ``` or ```bash yarn global add @namaste/kafka-schema-registry-cli ``` ## Usage The CLI is accessible under the `register-schemas` name. The help is accessible either by calling the program without parameters or environment variables set, or with help option: ```bash register-schemas ``` or ```bash register-schemas --help ``` This will print the following output: ```bash Usage: register-schemas [options] <schemasDir> Options: -V, --version output the version number -u, --url <registryUrl> Confluent schema registry URL -k, --key <key> Confluent schema registry key -s, --secret <secret> Confluent schema registry secret -h, --help output usage information ``` `url`, `key` and `secret` are required. In place of the required options, you may want to use environment variables: - `SCHEMA_REGISTRY_URL` - to set the schema registry URL (`-u` option) - `SCHEMA_REGISTRY_KEY` - to set the schema registry key (`-k` option) - `SCHEMA_REGISTRY_SECRET` - to set the schema registry secret (`-s` option) ## Schemas To successfuly run the program, you must supply the folder where the file(s) with the schemas you want to publish reside, or put those schemas in the `schemas` subfolder (the default). The schemas file must be a `json` file of the following shape: ```json { "[topic-name]": { "key": "optional - avro key definition", "value": "optional - avro value definition" } } ``` Example: ```json { "topic-example": { "key": { "type": "string", "namespace": "io.namastetech.schema.example", "name": "key", "doc": "Unique key" }, "value": { "type": "record", "namespace": "io.namastetech.schema.example", "name": "exampleValue", "doc": "A message passed to topic", "fields": [ { "name": "id", "type": "string", "doc": "An ID of the message" }, { "name": "message", "type": "string", "doc": "A string message" } ] } } } ``` ## Examples of use ### No params ```bash register-schemas ``` The schemas will be read from `./schemas` folder, and schema registry url, key and secret will be read from environment variables. ### With folder name ```bash register-schemas my-schemas ``` The schemas will be read from `./my-schemas` folder, and schema registry url, key and secret will be read from environment variables. ### With one option provided ```bash register-schemas -u https://myschemaregistryserver.io my-schemas ``` The schemas will be read from `./my-schemas` folder, the schema registry url used will be `https://myschemaregistryserver.io`, and schema registry key and secret will be read from environment variables.