summaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md53
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() │
+└────────────────────────────────────┘
+```
remember that computers suck.