confluent

module
v0.3.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 31, 2024 License: MIT

README

confluent

⚠️ Please don't use confluent anymore! Its development has been stopped in favour of ninja-bear, which follows the same ideology but uses different concepts in the background ⚠️

In times of distributed systems and en vogue micro-architecture it can get quite cumbersome to keep constants that are required by several components up-to-date and in sync. It can get especially hard when these components or services are written in different languages. confluent targets this issue by using a language neutral YAML configuration that lets you generate language specific config files in the style of classes, structs or consts.

Example

Alright, after all this confusing nerd-talk, lets just have a look at a simple example to see what confluent can do for you.

The example YAML file contains a property named opener with the value Hello World. Output files shall be generated for TypeScript, Python and C. In addition, the C-file shall be distributed to a Git server's config-folder (for more information please have a look at test-config.yaml).

Input (readme-config.yaml)
languages:
  - type: typescript
    property_naming: screaming_snake
    export: esm

  - type: python
    file_naming: snake
    property_naming: screaming_snake

  - type: c
    file_naming: snake
    property_naming: pascal
    distributions:
      - type: git
        path: config
        url: https://github.com/idontknow/example.git

properties:
  - type: string
    name: opener
    value: Hello World
Execute confluent
# -d is used to distribute the C-file to Git.
python3 -m confluent -c readme-config.yaml -d
Output (readme-config.ts)
export const ReadmeConfig = {
    OPENER: 'Hello World',
} as const;
Output (readme_config.py)
class ReadmeConfig:
    OPENER = 'Hello World'
Output (readme_config.h)
#ifndef README_CONFIG_H
#define README_CONFIG_H

/* Generated with confluent v0.3.0 (https://pypi.org/project/confluent/). */
const struct {
    char* Opener;
} ReadmeConfig = {
    "Hello World",
};

#endif /* README_CONFIG_H */

Currently supported languages

  • Java
  • JavaScript
  • TypeScript
  • Python
  • C
  • Go

Installation

python3 -m pip install confluent

Configuration

For detailed configuration information, please check example/test-config.yaml. All possible values are described there.

Usage

Commandline
# For more information run "python3 -m confluent -h".
python3 -m confluent -c test-config.yaml -o generated
Script
from confluent import Orchestrator

# Create Orchestrator instance from file.
orchestrator = Orchestrator.read_config('test-config.yaml')

# Write configs to 'generated' directory.
orchestrator.write('generated')

# Distribute configs (if required).
orchestrator.distribute()

How to participate

If you feel that there's a need for another language, feel free to add it. For detailed information how to add support for a new language, please refer to README.md.

Directories

Path Synopsis
tests

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL