Example of project Makefile
makefile
Other
SHELL := /bin/bash
help:
@$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$'
install:
pipenv install
activate:
pipenv shell
run:
python manage.py runserver
migration:
python manage.py makemigrations
migrate:
python manage.py migrate
superuser:
python manage.py createsuperuser
heroku:
git push heroku master
deploy:
docker-compose build
docker-compose up -d
down:
docker-compose down
Other2
.PHONY: all help translate test clean update compass collect rebuild
SETTINGS={{ project_name }}.settings
TEST_SETTINGS={{ project_name }}.test_settings
# target: all - Default target. Does nothing.
all:
@echo "Hello $(LOGNAME), nothing to do by default"
@echo "Try 'make help'"
# target: help - Display callable targets.
help:
@egrep "^# target:" [Mm]akefile
# target: translate - calls the "makemessages" django command
translate:
cd {{ project_name }} && django-admin.py makemessages --settings=$(SETTINGS) -i "site-static/*" -a --no-location
# target: test - calls the "test" django command
test:
django-admin.py test --settings=$(TEST_SETTINGS)
# target: clean - remove all ".pyc" files
clean:
django-admin.py clean_pyc --settings=$(SETTINGS)
# target: update - install (and update) pip requirements
update:
pip install -U -r requirements.pip
# target: compass - compass compile all scss files
compass:
cd {{ project_name }}/compass && compass compile
# target: collect - calls the "collectstatic" django command
collect:
django-admin.py collectstatic --settings=$(SETTINGS) --noinput
# target: rebuild - clean, update, compass, collect, then rebuild all data
rebuild: clean update compass collect
django-admin.py reset_db --settings=$(SETTINGS) --router=default --noinput
django-admin.py syncdb --settings=$(SETTINGS) --noinput
django-admin.py migrate --settings=$(SETTINGS)
#django-admin.py loaddata --settings=$(SETTINGS) <your fixtures here>
Other3 (django-makefile)
SHELL := /bin/sh
# SET THIS! Directory containing wsgi.py
# PROJECT := someproject
LOCALPATH := ./src
PYTHONPATH := $(LOCALPATH)/
SETTINGS := production
DJANGO_SETTINGS_MODULE = $(PROJECT).settings.$(SETTINGS)
DJANGO_POSTFIX := --settings=$(DJANGO_SETTINGS_MODULE) --pythonpath=$(PYTHONPATH)
LOCAL_SETTINGS := local
DJANGO_LOCAL_SETTINGS_MODULE = $(PROJECT).settings.$(LOCAL_SETTINGS)
DJANGO_LOCAL_POSTFIX := --settings=$(DJANGO_LOCAL_SETTINGS_MODULE) --pythonpath=$(PYTHONPATH)
TEST_SETTINGS := test
DJANGO_TEST_SETTINGS_MODULE = $(PROJECT).settings.$(TEST_SETTINGS)
DJANGO_POSTFIX := --settings=$(DJANGO_SETTINGS_MODULE) --pythonpath=$(PYTHONPATH)
DJANGO_TEST_POSTFIX := --settings=$(DJANGO_TEST_SETTINGS_MODULE) --pythonpath=$(PYTHONPATH)
PYTHON_BIN := $(VIRTUAL_ENV)/bin
.PHONY: clean showenv coverage test bootstrap pip virtualenv sdist virtual_env_set
showenv:
@echo 'Environment:'
@echo '-----------------------'
@$(PYTHON_BIN)/python -c "import sys; print 'sys.path:', sys.path"
@echo 'PYTHONPATH:' $(PYTHONPATH)
@echo 'PROJECT:' $(PROJECT)
@echo 'DJANGO_SETTINGS_MODULE:' $(DJANGO_SETTINGS_MODULE)
@echo 'DJANGO_LOCAL_SETTINGS_MODULE:' $(DJANGO_LOCAL_SETTINGS_MODULE)
@echo 'DJANGO_TEST_SETTINGS_MODULE:' $(DJANGO_TEST_SETTINGS_MODULE)
showenv.all: showenv showenv.virtualenv showenv.site
showenv.virtualenv: virtual_env_set
PATH := $(VIRTUAL_ENV)/bin:$(PATH)
export $(PATH)
@echo 'VIRTUAL_ENV:' $(VIRTUAL_ENV)
@echo 'PATH:' $(PATH)
showenv.site: site_set
@echo 'SITE:' $(SITE)
djangohelp: virtual_env_set
$(PYTHON_BIN)/django-admin.py help $(DJANGO_POSTFIX)
collectstatic: virtual_env_set
-mkdir -p .$(LOCALPATH)/static
$(PYTHON_BIN)/django-admin.py collectstatic -c --noinput $(DJANGO_POSTFIX)
runserver: virtual_env_set
$(PYTHON_BIN)/django-admin.py runserver $(DJANGO_POSTFIX)
syncdb: virtual_env_set
$(PYTHON_BIN)/django-admin.py syncdb $(DJANGO_POSTFIX)
cmd: virtual_env_set
$(PYTHON_BIN)/django-admin.py $(CMD) $(DJANGO_POSTFIX)
localcmd: virtual_env_set
$(PYTHON_BIN)/django-admin.py $(CMD) $(DJANGO_LOCAL_POSTFIX)
refresh:
touch src/$(PROJECT)/*wsgi.py
rsync:
rsync -avz --checksum --exclude-from .gitignore --exclude-from .rsyncignore . ${REMOTE_URI}
compare:
rsync -avz --checksum --dry-run --exclude-from .gitignore --exclude-from .rsyncignore . ${REMOTE_URI}
clean:
find . -name "*.pyc" -print0 | xargs -0 rm -rf
-rm -rf htmlcov
-rm -rf .coverage
-rm -rf build
-rm -rf dist
-rm -rf src/*.egg-info
test: clean virtual_env_set
-$(PYTHON_BIN)/coverage run $(PYTHON_BIN)/django-admin.py test $(APP) $(DJANGO_TEST_POSTFIX)
coverage: virtual_env_set
$(PYTHON_BIN)/coverage html --include="$(LOCALPATH)/*" --omit="*/admin.py,*/test*"
predeploy: test
register: virtual_env_set
python setup.py register
sdist: virtual_env_set
python setup.py sdist
upload: sdist virtual_env_set
python setup.py upload
make clean
bootstrap: virtualenv pip virtual_env_set
pip: requirements/$(SETTINGS).txt virtual_env_set
pip install -r requirements/$(SETTINGS).txt
virtualenv:
virtualenv --no-site-packages $(VIRTUAL_ENV)
echo $(VIRTUAL_ENV)
all: collectstatic refresh
