Metadata-Version: 2.1
Name: koodu
Version: 0.0.1
Summary: Simple and lightweight code generator engine written in python
Home-page: https://gmwa.github.io/koodu/
License: Apache 2.0
Author: Alex Mboutchouang
Author-email: mboutchouangalex@gmail.com
Requires-Python: >=3.8,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: License :: Other/Proprietary License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Libraries
Requires-Dist: jinja2 (>=3.1.2,<4.0.0)
Requires-Dist: pyyaml (>=6.0.1,<7.0.0)
Description-Content-Type: text/markdown

<p align="center">
  <a href="https://kuudo.net"><img src="https://github.com/GMWA/koodu/blob/main/docs/assets/images/koodu.png" alt="Koodu"></a>
</p>
<p align="center">
    <em>Koodu, simple code generator engine written in python</em>
</p>


# Koodu

It is a simple universal code generator. Koodu allows the user to generate codes with the same structure in several projects to save time. Koodu allows you to follow the DRY(Don't Repeat Youself) philosophy, i.e. instead of writing the same code several times, write a template once and use it on several models to generate different code efficiently.

## Installation
Clone this repository and run:
```
python -m pip install .
```

## Usage as CLI

### List the available templates
```
koodu list templates
```

### List the available models
```
koodu list models
```

### generate code using a template and et model
```
koodu generate
> -t path-to-template
> -m path-to-model
> -o output-path
```
The path to temple can be replace directly with build in template such as `frontend` or `backend`


## Usage as python library

Koodu can also be used as python library as follows:
```python
import json
from pathlib import Path
from koodu.generator import Generator

with open(Path("path-to-model"), "r", encoding="utf-8") as fp:
    model = json.loads(fp.read())

template_path = Path("path-to-template")
output_path = Path("output-path")
generator = Generator(
    model=model,
    template_folder=template_path,
    output=Path(args.output)
)

for file in generator.render():
    file.write()
```

## How to contritube

