Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -110,3 +110,6 @@ venv.bak/
project_new/

.vscode/

# Default Project
my_project/
37 changes: 22 additions & 15 deletions create_aio_app/template/{{cookiecutter.project_name}}/Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
PROJECT_NAME={{ cookiecutter.project_name }}
TIME=60
SUPPORTED_COMMANDS := all run build stop clean bash upgrade profile help doc black mpy lint test psql migrations migrate adev wait_resources
SUPPORTS_MAKE_ARGS := $(findstring $(firstword $(MAKECMDGOALS)), $(SUPPORTED_COMMANDS))
ifneq "$(SUPPORTS_MAKE_ARGS)" ""
COMMAND_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS))
MAKEFILE_PATH := $(abspath $(firstword $(MAKEFILE_LIST)))
$(eval $(COMMAND_ARGS):;@:)
endif

# colors
GREEN = $(shell tput -Txterm setaf 2)
Expand All @@ -15,31 +22,31 @@ all: run

## Runs application. Builds, creates, starts, and attaches to containers for a service. | Common
run:
@docker-compose up $(PROJECT_NAME)_app
@docker-compose up $(PROJECT_NAME)_app $(COMMAND_ARGS)

## Rebuild {{ cookiecutter.project_name }}_app container
build:
@docker-compose build $(PROJECT_NAME)_app
@docker-compose build $(PROJECT_NAME)_app $(COMMAND_ARGS)

## Stops application. Stops running container without removing them.
stop:
@docker-compose stop
@docker-compose stop $(COMMAND_ARGS)

## Removes stopped service containers.
clean:
@docker-compose down
@docker-compose down $(COMMAND_ARGS)

## Runs command `bash` commands in docker container.
bash:
@docker exec -it $(PROJECT_NAME) bash
@docker exec -it $(PROJECT_NAME) bash $(COMMAND_ARGS)

## Upgrade your python's dependencies:
upgrade:
docker-compose run --rm $(PROJECT_NAME)_app python3 -m $(PROJECT_NAME).utils.check-requirements
docker-compose run --rm $(PROJECT_NAME)_app python3 -m $(PROJECT_NAME).utils.check-requirements $(COMMAND_ARGS)

## Create profile sampling of application.
profile:
@docker exec -it $(PROJECT_NAME) py-spy record -d $(TIME) -o $(PROJECT_NAME)_profile.svg --pid 7
@docker exec -it $(PROJECT_NAME) py-spy record -d $(TIME) -o $(PROJECT_NAME)_profile.svg --pid 7 $(COMMAND_ARGS)

# Help

Expand Down Expand Up @@ -73,7 +80,7 @@ help:

## Generate html documentation. | Documentation
doc:
@docker-compose run --rm $(PROJECT_NAME)_app make _doc
@docker-compose run --rm $(PROJECT_NAME)_app make _doc $(COMMAND_ARGS)

_doc:
@doc8 docs
Expand All @@ -83,15 +90,15 @@ _doc:

## Formats code with `black`. | Linters
black:
@docker-compose run --rm $(PROJECT_NAME)_app black $(PROJECT_NAME) --exclude $(PROJECT_NAME)/migrations -l 79
@docker-compose run --rm $(PROJECT_NAME)_app black $(PROJECT_NAME) --exclude $(PROJECT_NAME)/migrations -l 79 $(COMMAND_ARGS)

## Checks types with `mypy`.
mypy:
@docker-compose run --rm $(PROJECT_NAME)_app mypy $(PROJECT_NAME)
@docker-compose run --rm $(PROJECT_NAME)_app mypy $(PROJECT_NAME) $(COMMAND_ARGS)

## Formats code with `flake8`.
lint:
@docker-compose run --rm $(PROJECT_NAME)_app flake8 $(PROJECT_NAME)
@docker-compose run --rm $(PROJECT_NAME)_app flake8 $(PROJECT_NAME) $(COMMAND_ARGS)

## Runs tests. | Tests
test: lint
Expand All @@ -103,15 +110,15 @@ test: lint

## Runs PostgreSQL UI. | Database
psql:
@docker exec -it $(PROJECT_NAME)_postgres psql -U postgres
@docker exec -it $(PROJECT_NAME)_postgres psql -U postgres $(COMMAND_ARGS)

## Makes migration.
migrations:
@docker exec -it $(PROJECT_NAME) alembic -n alembic:dev revision --autogenerate;
@docker exec -it $(PROJECT_NAME) alembic -n alembic:dev revision --autogenerate $(COMMAND_ARGS);

## Upgrades database.
migrate:
@docker exec -it $(PROJECT_NAME) alembic -n alembic:dev upgrade head;
@docker exec -it $(PROJECT_NAME) alembic -n alembic:dev upgrade head $(COMMAND_ARGS);

{%- endif %}

Expand All @@ -125,4 +132,4 @@ adev: {%- if cookiecutter.use_postgres == 'y' or cookiecutter.use_redis == 'y' %
## Runs application with specified postgres and redis.
wait_resources:
python3 -m $(PROJECT_NAME).utils.wait_script
{%- endif %}
{%- endif %}
Original file line number Diff line number Diff line change
Expand Up @@ -60,3 +60,11 @@ Other

``make doc``, Generate a sphinx documentation

Add params
-----

.. csv-table::
:header: "command", "description"
:widths: 20, 20

``make target -- arg1 arg2 arg..."``, allows to add some arguments for make commands