diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..2348701 --- /dev/null +++ b/Makefile @@ -0,0 +1,49 @@ +# Copyright DB InfraGO AG and contributors +# SPDX-License-Identifier: Apache-2.0 + +CAPELLA_MODEL_EXPLORER_HOST_IP ?= 127.0.0.1 +CAPELLA_MODEL_EXPLORER_PORT ?= 8000 +MODEL ?= coffee-machine + +# NOTE: Keep the 'help' target first, so that 'make' acts like 'make help' +.PHONY: help +help: + @echo 'Available make targets:' + @echo '' + @echo ' run MODEL=/some/model.aird' + @echo ' -- Run the backend with a model' + @echo ' build-frontend -- (Re-)Build the prod frontend files' + @echo ' dev-frontend -- Run the frontend in dev mode' + @echo ' storybook -- Run storybook for frontend development' + @echo ' clean-frontend -- Clean out all built/installed frontend files' + +.PHONY: run +run: frontend/dist/static/env.js + sed -i "s|__ROUTE_PREFIX__||g" frontend/dist/static/env.js + MODE=production python frontend/fetch-version.py + python -c "from capellambse_context_diagrams import install_elk; install_elk()" + MODE=production python -m capella_model_explorer.backend "$$MODEL" ./templates + +.PHONY: build-frontend +build-frontend: frontend/node_modules + cd frontend && npm run build + +.PHONY: dev-frontend +dev-frontend: frontend/node_modules + cd frontend && npm run dev + +.PHONY: storybook +storybook: frontend/node_modules + cd frontend && npm run storybook + +.PHONY: clean-frontend +clean-frontend: + cd frontend && rm -rf dist node_modules + +frontend/dist/static/env.js: frontend/node_modules + cd frontend && npm run build + touch -c frontend/dist/static/env.js + +frontend/node_modules: frontend/package.json frontend/package-lock.json + cd frontend && npm install + touch -c frontend/node_modules diff --git a/README.md b/README.md index 0900f9d..dc9736c 100644 --- a/README.md +++ b/README.md @@ -81,17 +81,44 @@ pip install -e '.[docs,test]' pre-commit install ``` -# Front-end development +# Development -To develop the frontend: +This repo contains a Makefile with recipes for a few commonly needed tasks +during development. Run `make help` for more details. + +## Developing the frontend + +To develop frontend components, run: ```bash -cd frontend -npm install +make storybook ``` -then, to develop components `npm run storybook` and to develop the whole app -`npm run dev` +To develop the app as a whole, run: + +```bash +make dev-frontend +``` + +Note that this requires a running backend server, see the next section. + +## Backend development + +To run the backend, use the following command: + +```bash +make run MODEL=../path/to/model.aird +``` + +This will start the API server on , where it will serve +the frontend in production mode. These static files can be rebuilt with `make +build-frontend`, although it is usually more convenient to run the frontend in +development mode with `make dev-frontend` (see above). + +The MODEL parameter can be set to anything that +[`capellambse.loadcli`](https://dsd-dbs.github.io/py-capellambse/start/specifying-models.html) +understands, but some functionality requires a Git-backed model (e.g. using a +`git+https://` URL). # Integration in the Capella Collaboration Manager