diff options
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..01a8ac0 --- /dev/null +++ b/README.md @@ -0,0 +1,53 @@ +Leverage the power of `pydantic` to create `click` command line applications! + +# Getting started + +Invoke the example module: + +``` +$ python -m pydanclick.examples --help +``` + +# Architecture + +``` +┌─────────────────────────────────────────────────┐ +│ Pydantic Schema │ +├─────────────────────────────────────────────────┤ +│ class MainArguments(BaseModel): │ +│ verbose: bool │ +│ name: str = Field(description="Service name.")│ +│ ... │ +└──┬──▲───────────────────────────────────────────┘ + │ │ + │ │ + │ │ Reads schema + │ │ + generate click interface + │ ┌┴────────────────────────┐ + │ │ Pydanclick decorator ├─────────────────────────────┐ + │ ├─────────────────────────┤ │ + │ │ pydanclick.core.command │ │ + │ │ pydanclick.core.group │ │ + │ └─────────────────────────┘ │ + │ │ +┌──▼───────────────────────────────────────────────────────┐ │ +│ Click Interface │ │ +├──────────────────────────────────────────────────────────┤ │ +│ click.Option("--verbose", required=True, type=click.BOOL)│ │ +│ type=click.BOOL) │ │ +│ click.Option("--name", required=True, │ │ +│ type=click.STR, │ │ +│ help="Service Name.") │ │ +└──────────────────────────────────────────────────────────┘ │ + │ +┌────────────────────────────────────┐ │ +│ Entrypoint invocation │◄──────────────────────┘ +├────────────────────────────────────┤ Read annotation(s) +│ @command() │ + invoke with arguments +│ def main(parameter: MainArguments):│ from click +│ ... │ +│ │ +│ if __name__ == "__main__": │ +│ main() │ +└────────────────────────────────────┘ +``` |