semvec/pypi-packages huggingface dataset:
everon 0.0.1
It makes easier to build user command-line interface
License: MIT

# EVERON (Python Library)

This module makes easier to write user command-line interfaces.

`everon.BaseCommand` makes use of the [argparse](https://docs.python.org/3/library/argparse.html), which is part of Python library.

`everon.MixinFontColor` is a mixin class, which allows to render color fonts in terminal.

## Basic Example



Below, a basic example of what the custom command should look like:

```python
# whats_time.py
from datetime import datetime
import everon


class WhatsTime(everon.BaseCommand):
    help = 'Display current time'

    def handle(self, *args, **kwargs):
        current_time = datetime.now().strftime('%X')
        print("It's now {}".format(current_time))


if __name__ == '__main__':
    whatstime = WhatsTime()
    whatstime.run()
```

See how we named our module `whatstime.py`.

This command can be executed as:

```
python -m whats_time
```

Output:

```
It's now 11:54:19
```

## Handling Arguments

 To handle arguments in command, we should define a method named `add_args`.

```python
# rand_str.py
import argparse
import random
import string

from everon import BaseCommand


class RandString(BaseCommand):

    def add_args(self, parser: argparse.ArgumentParser):
        parser.add_argument('length', type=int, help='Indicates length of string')
        parser.add_argument('-l', '--lowercase', action='store_true', help='Only get lowercase letters')

    def handle(self, *args, **kwargs):
        string_length = kwargs.get('length')
        allow_lowercase = kwargs.get('lowercase')
        letters = string.ascii_lowercase if allow_lowercase else string.ascii_letters
        print("Random String is {}".format(
            ''.join(random.choice(letters) for _ in range(string_length)))
        )


if __name__ == '__main__':
    rand_str = RandString()
    rand_str.run()
```



#### Usage:

```
python -m rand_str 10 -l
```

Or

```
python -m rand_str 10 --lower
```

Output

```
Random String is wjaehxsnxc
```

## Font Color

We could setting an appropriate color to the out message with the example

```python
# say_hello.py
from everon import BaseCommand, MixinFontColor


class SayHello(BaseCommand, MixinFontColor):
    def __init__(self):
        MixinFontColor.__init__(self)

    def handle(self, *args, **kwargs):
        self.print_ok('Printing text ok')
        self.print_err('Printing text error')
        print(self.text_as_link('Printing text as link'))
        print(self.color.LIGHTMAGENTA_EX + 'Printing text with custom color')


if __name__ == '__main__':
    foo = SayHello()
    foo.run()
```

Checking with the following command

```
python -m say_hello
```

Output



![](https://github.com/wayfar3/everon/blob/master/res/MixinFontColor.jpg)