This change addresses https://github.com/mingrammer/diagrams/issues/369 while providing a simple CLI entry point which can be used outside the virtual environment of the installed package. This works well with for example with [pipx](https://pipxproject.github.io/pipx/).pull/524/head
@@ -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() |
@@ -18,6 +18,9 @@ $ pipenv install diagrams | |||||
# using poetry | # using poetry | ||||
$ poetry add diagrams | $ poetry add diagrams | ||||
# using pipx | |||||
$ pipx install diagrams | |||||
``` | ``` | ||||
## Quick Start | ## Quick Start | ||||
@@ -43,6 +46,21 @@ $ python diagram.py | |||||
It will be saved as `web_service.png` on your working directory. | It will be saved as `web_service.png` on 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 | ## Next | ||||
See more [Examples](/docs/getting-started/examples) or see [Guides](/docs/guides/diagram) page for more details. | See more [Examples](/docs/getting-started/examples) or see [Guides](/docs/guides/diagram) page for more details. |
@@ -9,6 +9,9 @@ homepage = "https://diagrams.mingrammer.com" | |||||
repository = "https://github.com/mingrammer/diagrams" | repository = "https://github.com/mingrammer/diagrams" | ||||
include = ["resources/**/*"] | include = ["resources/**/*"] | ||||
[tool.poetry.scripts] | |||||
diagrams="diagrams.cli:main" | |||||
[tool.poetry.dependencies] | [tool.poetry.dependencies] | ||||
python = "^3.6" | python = "^3.6" | ||||
graphviz = ">=0.13.2,<0.17.0" | graphviz = ">=0.13.2,<0.17.0" | ||||