Metadata-Version: 2.1
Name: logicparser
Version: 1.0.0
Summary: a free layer to create logics for your arguments
Home-page: https://github.com/mastrobirraio/logicparser
Author: Giuseppe "mastrobirraio" Matranga
Author-email: matrangagiuseppe99@gmail.com
Maintainer: Giuseppe "mastrobirraio" Matranga
License: MIT
Keywords: args,arguments,argparse,parser,logic,logicparser
Platform: UNKNOWN
Classifier: Operating System :: OS Independent
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Terminals
Requires-Python: >=3.6
Description-Content-Type: text/markdown

# logicparser

A free layer to create logics for your arguments

## Getting Started

logicparser is a python package that allow you to create logic and dependncies
between CLI arguments.
These instructions will install logicparser to your machine.

### Prerequisites

* Python3
* PIP3

### Installation

```
pip3 install logicparser 
```

## Usage

### Define arguments

The class used to create a new argument is imported in this way:
```
from logicparser import Argument

arg = Argument(arg_name='--arg-name')
```

#### metavar

```
arg = Argument(arg_name='--arg-name', metavar='ARG_VALUE')
```

#### action 

```
arg = Argument(arg_name='--arg-name', action='store_true')
```

#### help 

```
arg = Argument(arg_name='--arg-name', help='This message will be show when you will define -h arg')
```

### Add relationships

#### require
You can define that an argument can be defined only if others arguments
are defined previously
```
arg = Argument(
    arg_name='arg-name',
    require=('--other-arg',))
```

#### conflict
You can define that an argument cannot be defined if other arguments are
defined previously
```
arg = Argument(
    arg_name='arg-name',
    conflict=('--other-arg',))
```

#### dependency
You can define that an arguments can be defined only if at least one of others
arguments is defined
```
arg = Argument(
    arg_name='arg-name',
    dependency=('--other-arg1', 'other-arg2',))
```

### Parse arguments
When you have defined the list of your arguments you can play 
args validation parsing them.
```
from logicparser import Argument, ArgumentHandler

args = ArgumentHandler([
    Argument(arg_name='--arg-name', ...),
    Argument(arg_name='--arg-name2', ...),
    Argument(arg_name='--arg-name3', ...),
    ...
]).args
```

## Contributing

Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on code of conduct, and the process for submitting pull requests.

## License

This project is licensed under the MIT License, read [LICENSE](LICENSE) for details 

## Author

* **Giuseppe "mastrobirraio" Matranga** - *Initial work* - [Github](https://github.com/mastrobirraio)

