django-axes/Makefile
Alex Clark a1a880bf74 Update makefile; add reqs
- Makefile based on https://github.com/aclark4life/project-makefile
- Reqs (requirements.txt) facilitate "make install"
2016-06-20 16:06:16 -04:00

216 lines
5.6 KiB
Makefile

# https://github.com/aclark4life/project-makefile
#
# The MIT License (MIT)
#
# Copyright (c) 2016 Alex Clark
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
.DEFAULT_GOAL=git-commit-edit-push
APP=app
MESSAGE="Update"
PROJECT=project
TMP:=$(shell echo `tmp`)
commit: git-commit-auto-push
co: git-checkout-branches
db: django-migrate django-su
db-clean: django-db-clean-postgres
django-start: django-init
fe-init: npm-init npm-install grunt-init grunt-serve
fe: npm-install grunt-serve
freeze: python-pip-freeze
heroku: heroku-push
install: python3.5-virtualenv python-pip-install
lint: python-flake python-yapf python-wc
migrate: django-migrate
push: git-push
plone-start: plone-init
readme: python-package-readme-test
release: python-package-release
releasetest: python-package-release-test
serve: python-serve
sphinx-start: sphinx-init
static: django-static
test: django-test
vm: vagrant-up
vm-down: vagrant-suspend
# Django
django-db-clean-postgres:
-dropdb $(PROJECT)-$(APP)
-createdb $(PROJECT)-$(APP)
django-db-clean-sqlite:
-rm -f $(PROJECT)-$(APP).sqlite3
django-init:
-mkdir -p $(PROJECT)/$(APP)
-django-admin startproject $(PROJECT) .
-django-admin startapp $(APP) $(PROJECT)/$(APP)
django-install:
$(MAKE) python-virtualenv
bin/pip install Django
django-migrate:
python manage.py migrate
django-migrations:
python manage.py makemigrations $(APP)
django-migrations-clean:
rm -rf $(PROJECT)/$(APP)/migrations
$(MAKE) django-migrations
django-serve:
python manage.py runserver
django-test:
python manage.py test
django-shell:
python manage.py shell
django-static:
python manage.py collectstatic --noinput
django-su:
python manage.py createsuperuser
# Git
REMOTE_BRANCHES=`git branch -a |\
grep remote |\
grep -v HEAD |\
grep -v master`
git-checkout-branches:
-for i in $(REMOTE_BRANCHES) ; do \
git checkout -t $$i ; done
git-commit-auto-push:
git commit -a -m $(MESSAGE)
$(MAKE) git-push
git-commit-edit-push:
git commit -a
$(MAKE) git-push
git-push:
git push
# Heroku
heroku-debug-on:
heroku config:set DEBUG=1
heroku-debug-off:
heroku config:unset DEBUG
heroku-push:
git push heroku
heroku-shell:
heroku run bash
# Misc
help:
@echo "\nPlease run \`make\` with one of these targets:\n"
@$(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 '^$@$$' | xargs | tr ' ' '\n' | awk\
'{print " - "$$0}'
@echo "\n"
review:
open -a "Sublime Text 2" `find $(PROJECT) -name \*.py | grep -v __init__.py`\
`find $(PROJECT) -name \*.html`
# Node
npm-init:
npm init
npm-install:
npm install
grunt-init:
npm install grunt
grunt-init Gruntfile
grunt-serve:
grunt serve
# Plone
plone-heroku:
-@createuser -s plone > /dev/null 2>&1
-@createdb -U plone plone > /dev/null 2>&1
@export PORT=8080 && \
export USERNAME=admin && \
export PASSWORD=admin && \
bin/buildout -c heroku.cfg
plone-init:
plock --force --no-cache --no-virtualenv .
plone-install:
$(MAKE) install
bin/buildout
plone-db-sync:
bin/buildout -c database.cfg
plone-serve:
@echo "Zope about to handle requests here:\n\n\thttp://localhost:8080\n"
@bin/plone fg
# Python
python-clean-pyc:
find . -name \*.pyc | xargs rm -v
python-flake:
-flake8 *.py
-flake8 $(PROJECT)/*.py
-flake8 $(PROJECT)/$(APP)/*.py
python-package-check:
check-manifest
pyroma .
python-package-readme-test:
rst2html.py README.rst > readme.html; open readme.html
python-package-release:
python setup.py sdist --format=gztar,zip upload
python-package-release-test:
python setup.py sdist --format=gztar,zip upload -r test
python-package-test:
python setup.py test
python-pip-freeze:
bin/pip freeze | sort > $(TMP)/requirements.txt
mv -f $(TMP)/requirements.txt .
python-pip-install:
bin/pip install -r requirements.txt
python-serve:
@echo "\n\tServing HTTP on http://0.0.0.0:8000\n"
python -m SimpleHTTPServer
python-virtualenv:
virtualenv .
python-yapf:
-yapf -i *.py
-yapf -i -e $(PROJECT)/urls.py $(PROJECT)/*.py
-yapf -i $(PROJECT)/$(APP)/*.py
python-wc:
-wc -l *.py
-wc -l $(PROJECT)/*.py
-wc -l $(PROJECT)/$(APP)/*.py
# Sphinx
sphinx-init:
sphinx-quickstart -q -p "Python Project" -a "Alex Clark" -v 0.0.1 doc
sphinx-serve:
@echo "\nServing HTTP on http://0.0.0.0:8085 ...\n"
pushd _build/html; python -m SimpleHTTPServer 8085; popd
# Vagrant
vagrant-box-update:
vagrant box update
vagrant-clean:
vagrant destroy
vagrant-down:
vagrant suspend
vagrant-init:
vagrant init ubuntu/trusty64
vagrant up --provider virtualbox
vagrant-up:
vagrant up --provision
# Django-axes
python3.5-virtualenv:
virtualenv-3.5 .