nsupdate.info/DEVELOPMENT.md
Florian Eitel f4ab1964e2
Add Pipfile for dependency tracking
It's optional. Keeping the old requirements.txt files around.
2023-03-18 13:42:39 +01:00

56 lines
1.5 KiB
Markdown

# Dependency management
Get [Pipenv](https://pipenv.pypa.io/en/latest/installation/) and checkout the [Pipenv Command reference](https://pipenv.pypa.io/en/latest/commands/)
## Install new dependencies
https://pipenv.pypa.io/en/latest/commands/#install
```
pipenv install mypkg
```
## Spawn a shell with correct python paths
```
pipenv shell
```
Exit the shell with `exit`
## Dependency maintenance
### Update requirements.txt files including transitive dependencies
```
pipenv update
```
NOTE: This is not done today and only a suggestion.
```
pipenv requirements --exclude-markers > requirements.d/all.txt
pipenv requirements --exclude-markers --dev-only > requirements.d/dev.txt
```
Verify the updated dependencies don't include any security vulnerabilities
```
pipenv check
```
# Build locally
1. Install `build` (see [docs](https://packaging.python.org/en/latest/tutorials/packaging-projects/#generating-distribution-archives) for example via `pacman -S python-build` on ArchLinux
2. Afterwards run the command to generate pip packgases in `dist/`: `pyproject-build`
NOTE: This is also needed before development because the command generates `./src/nsupdate/_version.py`.
# Run locally
1. Install dependencies `pipenv install --dev`
2. Generate `src/nsupdate/_version.py` file by running `pyproject-build`
2. Create database using `pipenv run ./manage.py migrate`
3. Create a superuser with `pipenv run ./manage.py createsuperuser`
4. Run the server with `pipenv run ./manage.py runserver`