# gendia
[![PyPI Downloads](https://static.pepy.tech/badge/gendia)](https://pepy.tech/projects/gendia)

---
A Python CLI to generate a tree structured diagram for any directory!

---
Imagine this: you are on Discord and is request help from someone about a project you are working on. You want to show the structure of your project directory to the person. You can't just send a screenshot of the directory because it's too big and the person won't be able to see the whole structure. You can't just send a text file with the structure because it's too boring and the person won't be able to understand it easily. What do you do? You use `gendia`!


Heres an example of a tree structured diagram generated by `gendia`:

```
project
├── src
│   ├── main.py
│   ├── utils
│   │   ├── __init__.py
│   │   ├── helper.py
│   │   └── helper2.py
│   ├── tests
│   │   ├── __init__.py
│   │   ├── test_main.py
│   │   └── test_helper.py
│   └── README.md
├── LICENSE
└── .gitignore
```

Not just that, it is color coded! The directories are in blue, and different file types are in different colors. This makes it easier to understand the structure of the directory.

## Installation
To add `gendia` to your project, run:
```bash
pip install gendia
```
This should install `gendia` to your project. You can now use it to generate tree structured diagrams for your directories.

## Usage
To use `gendia`, run:
```bash
gendia path/to/directory
```
This should generate a tree structured diagram for the current working directory. You can also specify the output file by using the `-o` flag:
```bash
gendia -o output.txt
```
This should generate a tree structured diagram for the current working directory and save it to `output.txt`.

`--hidden` flag can be used to show hidden files and directories:
```bash
gendia --hidden
```

`--depth` flag can be used to specify the max depth of the foulders to go into, 1 being the lowest:
```bash
gendia --depth 1
```

`-i` flag enables icons, which are unicode/emoji characters that represent the file types. This is useful for quickly identifying the file types in the tree structure:
```bash
gendia -i
```

`--exclude` flag can be used to exclude certain files and directories from the tree structure. This is useful for excluding files and directories that are not relevant to the tree structure:
```bash
gendia --exclude .git,venv
```

### Config files
Gendia's config file can reside in either of the 2 directory's: 
```
~/gendia_config.ini
```
or
```
~/Scripts/gendia_config.ini
```

You can add the following contents to the file:
```ini
[settings]
exclude = .git,__pycache__,venv
```

The excluded files and foulders in the config file will be appended to the other excluded files you later specify with the `--exclude` flag.
