diff --git a/diagrams/cli.py b/diagrams/cli.py new file mode 100644 index 0000000..22a7368 --- /dev/null +++ b/diagrams/cli.py @@ -0,0 +1,31 @@ +import argparse +import sys + + +def run() -> int: + parser = argparse.ArgumentParser( + description="Run diagrams code files in a diagrams environment.", + ) + parser.add_argument( + "paths", + metavar="path", + type=str, + nargs="+", + help="a Python file containing diagrams code", + ) + args = parser.parse_args() + + for path in args.paths: + print(path) + with open(path) as f: + exec(f.read()) + + return 0 + + +def main(): + sys.exit(run()) + + +if __name__ == "__main__": + main() diff --git a/docs/getting-started/installation.md b/docs/getting-started/installation.md index f38b524..4c7ac73 100644 --- a/docs/getting-started/installation.md +++ b/docs/getting-started/installation.md @@ -20,6 +20,9 @@ $ pipenv install diagrams # using poetry $ poetry add diagrams + +# using pipx +$ pipx install diagrams ``` ## Quick Start @@ -47,6 +50,21 @@ This generates the diagram below: It will be saved as `web_service.png` in your working directory. +### CLI + +If the `diagrams` CLI has been installed system wide (i.e. with [pipx](https://pipxproject.github.io/pipx/)), +then the preceding command is equivalent to this. + +```shell +$ diagrams diagram.py +``` + +Furthermore you can execute multiple files at once + +```shell +$ diagrams diagram1.py diagram2.py +``` + ## Next See more [Examples](/docs/getting-started/examples) or see the [Guides](/docs/guides/diagram) page for more details.