Skip to content

Instantly share code, notes, and snippets.

@SerhatTeker
Last active January 22, 2019 12:22
Show Gist options
  • Save SerhatTeker/f2d633b5b1fd4ecc479ffe389e3f3447 to your computer and use it in GitHub Desktop.
Save SerhatTeker/f2d633b5b1fd4ecc479ffe389e3f3447 to your computer and use it in GitHub Desktop.
Makefile template
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