Last active
January 22, 2019 12:22
-
-
Save SerhatTeker/f2d633b5b1fd4ecc479ffe389e3f3447 to your computer and use it in GitHub Desktop.
Makefile template
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SHELL := /bin/bash | |
PYTHON_BIN := $(VIRTUAL_ENV)/bin | |
.PHONY: help test lint redis up start stop django | |
# COLORS | |
BLACK := $(shell tput -Txterm setaf 0) | |
RED := $(shell tput -Txterm setaf 1) | |
GREEN := $(shell tput -Txterm setaf 2) | |
YELLOW := $(shell tput -Txterm setaf 3) | |
BLUE := $(shell tput -Txterm setaf 4) | |
MAGENTA := $(shell tput -Txterm setaf 5) | |
CYAN := $(shell tput -Txterm setaf 6) | |
WHITE := $(shell tput -Txterm setaf 7) | |
BOLD := $(shell tput -Txterm bold) | |
RESET := $(shell tput -Txterm sgr0) | |
# add help text after each target name starting with '\#\#' | |
# A category can be added with @category | |
HELP_HELP = \ | |
%help; \ | |
while(<>) { push @{$$help{$$2 // 'options'}}, [$$1, $$3] if /^([a-zA-Z\-]+)\s*:.*\#\#(?:@([a-zA-Z\-]+))?\s(.*)$$/ }; \ | |
print "${MAGENTA}usage: ${WHITE}make ${YELLOW}[target]${RESET}\n\n"; \ | |
for (sort keys %help) { \ | |
print "${BLUE}$$_:${RESET}\n"; \ | |
for (@{$$help{$$_}}) { \ | |
$$sep = " " x (32 - length $$_->[0]); \ | |
print " ${YELLOW}$$_->[0]${RESET}$$sep${GREEN}$$_->[1]${RESET}\n"; \ | |
}; \ | |
print "\n"; } | |
help: ##@help Show this helps. | |
@perl -e '$(HELP_HELP)' $(MAKEFILE_LIST) | |
# SHOWENV | |
showenv: showenv-info showenv-project showenv-python showenv-django ##@showenv Show all envs | |
showenv-info: ##@showenv Show envs info | |
@echo -e "${YELLOW}INFO: Gets env vars from .env and .envs/:${RESET}" | |
showenv-project: ##@showenv Show Project envs | |
@echo -e "${GREEN}Project Detail:${RESET}" | |
@echo 'PROJECT:' $(PROJECT) | |
showenv-python: ##@showenv Show Python envs | |
@echo -e "${GREEN}Python Environment:${RESET}" | |
@$(PYTHON_BIN)/python -c "import sys; print(sys.path)" | |
@echo 'PYTHONPATH:' $(PYTHONPATH) | |
@echo 'PYTHON_BIN:' $(PYTHON_BIN) | |
showenv-django: ##@showenv Show Django envs | |
@echo "${GREEN}Django Environment:${RESET}" | |
@echo 'DJANGO_SETTINGS_MODULE:' $(DJANGO_SETTINGS_MODULE) | |
@echo 'DJANGO_DEV_SETTINGS_MODULE:' $(DJANGO_DEV_SETTINGS_MODULE) | |
@echo 'DJANGO_TEST_SETTINGS_MODULE:' $(DJANGO_TEST_SETTINGS_MODULE) | |
@echo 'DJANGO_STAGE_SETTINGS_MODULE:' $(DJANGO_STAGE_SETTINGS_MODULE) | |
@echo 'DJANGO_PROD_SETTINGS_MODULE:' $(DJANGO_PROD_SETTINGS_MODULE) | |
# TEST | |
test: clean-pyc | |
pytest --verbose --color=yes $(TEST_PATH) | |
# OTHER | |
# Linting | |
lint: ##@other docker-compose up -d --build | |
flake8 --exclude=.tox | |
# Clean | |
clean-pyc: ##@other clean pyc files and folders | |
find . -name '*.pyc' -exec rm --force {} + | |
find . -name '*.pyo' -exec rm --force {} + | |
name '*~' -exec rm --force {} | |
clean-build: ##@other clean builds | |
rm --force --recursive build/ | |
rm --force --recursive dist/ | |
rm --force --recursive *.egg-info | |
# DOCKER | |
# docker-compose | |
up: ##@docker docker-compose up -d --build | |
docker-compose -f docker-compose.stage.yml up -d --build | |
start: ##@docker docker-compose start | |
docker-compose -f docker-compose.stage.yml start | |
stop: ##@docker docker-compose stop | |
docker-compose -f docker-compose.stage.yml stop | |
# docker-redis | |
redis: start-redis ##@redis start localredis container | |
run-redis: ##@redis run redis local instance | |
docker run --name $(REDIS_CONTAINER_NAME) -d -p 6379:6379 redis:3.2 redis-server --appendonly yes | |
bash-redis: ##@redis bash localredis container | |
docker exec -ti $(REDIS_CONTAINER_NAME) bash | |
start-redis: ##@redis start localredis container | |
docker start $(REDIS_CONTAINER_ID) | |
stop-redis: ##@redis stop localredis container | |
docker stop $(REDIS_CONTAINER_ID) | |
# DJANGO | |
django: ##@django runserver_plus | |
python manage.py runserver_plus $(DJANGO_HOST):$(DJANGO_PORT) | |
django-normal: ##@django runserver | |
python manage.py runserver $(DJANGO_PORT) | |
translate: ##@django translate statics : makemessages | |
django-admin.py makemessages --settings=$(DJANGO_PROD_SETTINGS_MODULE) -i "site-static/*" -a --no-location | |
# celery | |
worker: ##@celery run Worker | |
celery -A $(CELERY_APP) worker -l info | |
beat: ##@celery run Beat | |
celery -A $(CELERY_APP) beat -l info | |
flower: ##@celery run Flower | |
celery flower -A $(CELERY_APP) --port=$(CELERY_FLOWER_PORT) | |
# GIT | |
git-log: ##@git one line log detail | |
git log --format=oneline |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment