Centralize project commands to a Makefile
This commit is contained in:
parent
aa9aaad78c
commit
2f0f67d15a
3 changed files with 47 additions and 8 deletions
|
@ -5,10 +5,10 @@
|
||||||
From the project root directory, execute the following command:
|
From the project root directory, execute the following command:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
python ./manage.py test
|
make test
|
||||||
```
|
```
|
||||||
|
|
||||||
### How to maintain `requirements.txt`?
|
### How to maintain the Requirements File (`requirements.txt`)?
|
||||||
|
|
||||||
The canonical list of installation requirements (including development requirements) is maintained in the [`setup.py`](setup.py) file.
|
The canonical list of installation requirements (including development requirements) is maintained in the [`setup.py`](setup.py) file.
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ The Requirements File ([`requirements.txt`](requirements.txt)) file must be kept
|
||||||
To to automatically generate or update `requirements.txt` based on `setup.py`, run [`pip-tools`](https://github.com/jazzband/pip-tools)’s `pip-compile`:
|
To to automatically generate or update `requirements.txt` based on `setup.py`, run [`pip-tools`](https://github.com/jazzband/pip-tools)’s `pip-compile`:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
python -m piptools compile --output-file=requirements.txt
|
make generate_requirements_file
|
||||||
```
|
```
|
||||||
|
|
||||||
**Warning:** Due to [limitations](https://github.com/jazzband/pip-tools/issues/908) in `pip-tools`, the same workflow can not be used for generating a `dev-requirements.txt` file, and requirements can not be declared in a `setup.cfg` file.
|
**Warning:** Due to [limitations](https://github.com/jazzband/pip-tools/issues/908) in `pip-tools`, the same workflow can not be used for generating a `dev-requirements.txt` file, and requirements can not be declared in a `setup.cfg` file.
|
||||||
|
@ -25,7 +25,7 @@ python -m piptools compile --output-file=requirements.txt
|
||||||
### How to install modules required for development?
|
### How to install modules required for development?
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
python -m pip install -e ".[dev]"
|
make install_dev
|
||||||
```
|
```
|
||||||
|
|
||||||
### How to run a code formatter?
|
### How to run a code formatter?
|
||||||
|
@ -34,10 +34,10 @@ Run [Black](https://black.readthedocs.io/):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# Dry-run, showing what should be rewritten:
|
# Dry-run, showing what should be rewritten:
|
||||||
python -m black --target-version=py36 --diff .
|
make check_code_format
|
||||||
|
|
||||||
# Run code format:
|
# Run code format:
|
||||||
python -m black --target-version=py36 .
|
make format_code
|
||||||
```
|
```
|
||||||
|
|
||||||
### How to run a linter?
|
### How to run a linter?
|
||||||
|
@ -45,5 +45,5 @@ python -m black --target-version=py36 .
|
||||||
Run [Flake8](https://flake8.pycqa.org/):
|
Run [Flake8](https://flake8.pycqa.org/):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
python -m flake8
|
make lint
|
||||||
```
|
```
|
||||||
|
|
39
Makefile
Normal file
39
Makefile
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
.PHONY: \
|
||||||
|
clean \
|
||||||
|
check_code_format \
|
||||||
|
format_code \
|
||||||
|
generate_requirements_file \
|
||||||
|
install \
|
||||||
|
install_dev \
|
||||||
|
lint \
|
||||||
|
run \
|
||||||
|
test
|
||||||
|
|
||||||
|
clean:
|
||||||
|
# https://stackoverflow.com/a/41386937/162086
|
||||||
|
python3 -Bc "for p in __import__('pathlib').Path('.').rglob('*.py[co]'): p.unlink()"; \
|
||||||
|
python3 -Bc "for p in __import__('pathlib').Path('.').rglob('__pycache__'): p.rmdir()"
|
||||||
|
|
||||||
|
check_code_format:
|
||||||
|
python3 -m black --target-version=py36 --diff .
|
||||||
|
|
||||||
|
format_code:
|
||||||
|
python3 -m black --target-version=py36 .
|
||||||
|
|
||||||
|
generate_requirements_file:
|
||||||
|
python3 -m piptools compile --output-file=requirements.txt
|
||||||
|
|
||||||
|
install:
|
||||||
|
python3 -m pip install -r requirements.txt
|
||||||
|
|
||||||
|
install_dev:
|
||||||
|
python3 -m pip install -e ".[dev]"
|
||||||
|
|
||||||
|
lint:
|
||||||
|
python3 -m flake8
|
||||||
|
|
||||||
|
run:
|
||||||
|
python3 ./manage.py runserver --ipv6
|
||||||
|
|
||||||
|
test:
|
||||||
|
python3 ./manage.py test
|
|
@ -7,5 +7,5 @@ A micro project proposed as a screening task for the [Senior Django Developer](h
|
||||||
On a system, or in a virtual environment where [Python](https://www.python.org/) version 3.6 or above, and [`pip`](https://pip.pypa.io/) and [`setuptools`](https://pypi.org/project/setuptools/) are available, run the following command to install required modules:
|
On a system, or in a virtual environment where [Python](https://www.python.org/) version 3.6 or above, and [`pip`](https://pip.pypa.io/) and [`setuptools`](https://pypi.org/project/setuptools/) are available, run the following command to install required modules:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
python -m pip install -r requirements.txt
|
make install
|
||||||
```
|
```
|
||||||
|
|
Loading…
Reference in a new issue