# Development Guide
## Docker local development setup
You should have docker installed in your system, if not click [here ](https://docs.docker.com/get-docker/ ).
1. Go to diagrams root directory.
2. Build the docker image.
```shell
docker build --tag diagrams:1.0 -f ./docker/dev/Dockerfile .
```
3. Create the container, run in background and mount the project source code.
```shell
docker run -d \
-it \
--name diagrams \
--mount type=bind,source="$(pwd)",target=/usr/src/diagrams \
diagrams:1.0
```
4. Run unit tests in the host using the container to confirm that it's working.
```shell
docker exec diagrams python -m unittest tests/*.py -v
```
5. Run the bash script `autogen.sh` to test.
```shell
docker exec diagrams ./autogen.sh
```
6. If the unit tests and the bash script `autogen.sh` is working correctly, then your system is now ready for development.
## Mac local development setup
To be able to develop and run diagrams locally on you Mac device, you should have [Python ](https://www.python.org/downloads/ ), [Go ](https://golang.org/doc/install ) and [brew ](https://brew.sh/ ) installed on your system.
1. Go to diagrams root directory.
2. Install poetry, the Python project management package used by diagrams.
```shell
pip install poetry
```
3. Install the project's Python dependencies.
```shell
poetry install
```
4. Install diagrams binary dependencies.
```shell
brew install imagemagick inkscape black
go get github.com/mingrammer/round
```
5. Run unit tests to confirm that it's working.
```shell
python -m unittest tests/*.py -v
```
6. Run the bash script `autogen.sh` to test.
```shell
./autogen.sh
```
7. If the unit tests and the bash script `autogen.sh` is working correctly, then your system is now ready for development.