Metadata-Version: 2.1
Name: ganzo
Version: 0.5.0
Summary: Project creator (from templates)
Project-URL: homepage, https://github.com/miguelnmiranda/ganzo
Requires-Python: <3.12,>=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: google-cloud-storage >=2.14.0
Requires-Dist: GitPython >=3.1.30
Provides-Extra: dev
Requires-Dist: pytest ==7.1.2 ; extra == 'dev'
Requires-Dist: pytest-cov ==3.0.0 ; extra == 'dev'
Requires-Dist: mock ==4.0.3 ; extra == 'dev'
Requires-Dist: pylint ==2.14.1 ; extra == 'dev'
Requires-Dist: bandit ==1.7.4 ; extra == 'dev'
Requires-Dist: black ==22.3.0 ; extra == 'dev'
Requires-Dist: isort ==5.10.1 ; extra == 'dev'
Requires-Dist: pyright ==1.1.288 ; extra == 'dev'
Requires-Dist: toml ==0.10.2 ; extra == 'dev'
Provides-Extra: pub
Requires-Dist: build ==0.8.0 ; extra == 'pub'
Requires-Dist: twine ==4.0.1 ; extra == 'pub'

# Ganzo

Project creator (from templates).

## How to use?

Ganzo assumes the existence of a folder `$HOME/.ganzo` containing the configuration.

```
/$HOME
    /.ganzo
        configuration.json
```

Example `configuration.json`:

```
{
    "gcs_bucket_name": "<gcs_bucket_name>" // Google Cloud Storage bucket where the templates are stored.
}
```

Then check how to use ganzo in from commandline.

```
$ ganzo -h
```
## Templates

Templates are store in a directory containing a `templates.list` file,
which contains a template name per line.

```
/path/to/templates
    templates.list
    /app
        /code
        pyproject.toml
        ...
    /lib
        /scripts
        README.md.nzo
        ...
```

The `templates.list` file for the previous directory should list all the templates available.

```
# Content of templates.list
app
list
```

Each templates directory will be fully copied as part of loading the template for a new project.

### Variable resolution

Files with extension `.nzo` are candidates for variable resolution,
which will replace variables within the files with project specific values.

```
# Content of README.md.nzo

This projects name is ${PROJECT_NAME}.
```

Currently the only available variable for resolution is `PROJECT_NAME`.

## Development

### Python virtual environment

Create and load a virtual environement.

```
python -m venv .venv
source .venv/bin/activate
```

### Install

Install all dependencies in editable mode.

```
make install
```

### Misc

Check what other shortcuts are available.

```
make help
```

## Areas of improvement

- Add/Test Support for older/newer Python versions.
- Support for custom variables.
- Directory structure changes based on variables.
- Improve coverage of core and resolvers.
- Improve error handling and messages
