feat(scripts): provide `diagrams` CLI

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/)
or [uv](https://docs.astral.sh/uv/).
pull/524/head
Cedrik Neumann 4 years ago
parent 95f1bbabe9
commit 4ea9103f65
No known key found for this signature in database

@ -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()

@ -20,6 +20,9 @@ $ pipenv install diagrams
# using poetry # using poetry
$ poetry add diagrams $ poetry add diagrams
# using uv
$ uv tool install diagrams
``` ```
## Quick Start ## Quick Start
@ -47,6 +50,14 @@ This generates the diagram below:
It will be saved as `web_service.png` in your working directory. It will be saved as `web_service.png` in your working directory.
### CLI
With the `diagrams` CLI you can process one or more diagram files at once.
```shell
$ diagrams diagram1.py diagram2.py
```
## Next ## Next
See more [Examples](/docs/getting-started/examples) or see the [Guides](/docs/guides/diagram) page for more details. See more [Examples](/docs/getting-started/examples) or see the [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.9" python = "^3.9"
graphviz = ">=0.13.2,<0.21.0" graphviz = ">=0.13.2,<0.21.0"

Loading…
Cancel
Save