diff --git a/.gitignore b/.gitignore index cc10a539..59fdeca7 100644 --- a/.gitignore +++ b/.gitignore @@ -110,3 +110,6 @@ venv.bak/ project_new/ .vscode/ + +# Default Project +my_project/ diff --git a/create_aio_app/template/{{cookiecutter.project_name}}/Makefile b/create_aio_app/template/{{cookiecutter.project_name}}/Makefile index 3843a11f..f686cdf8 100644 --- a/create_aio_app/template/{{cookiecutter.project_name}}/Makefile +++ b/create_aio_app/template/{{cookiecutter.project_name}}/Makefile @@ -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) @@ -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 @@ -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 @@ -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 @@ -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 %} @@ -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 %} \ No newline at end of file +{%- endif %} diff --git a/create_aio_app/template/{{cookiecutter.project_name}}/docs/source/pages/commands.rst b/create_aio_app/template/{{cookiecutter.project_name}}/docs/source/pages/commands.rst index f4c0d6b6..00decb36 100644 --- a/create_aio_app/template/{{cookiecutter.project_name}}/docs/source/pages/commands.rst +++ b/create_aio_app/template/{{cookiecutter.project_name}}/docs/source/pages/commands.rst @@ -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