123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- VENV = venv
- PYTEST = $(PWD)/$(VENV)/bin/py.test
-
- # These targets are not files
- .PHONY: build_sandbox clean compile_translations coverage css docs extract_translations help install install-python \
- install-test install-js lint release retest sandbox_clean sandbox_image sandbox test todo venv package
-
- help: ## Display this help message
- @echo "Please use \`make <target>\` where <target> is one of"
- @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; \
- {printf "\033[36m%-40s\033[0m %s\n", $$1, $$2}'
-
- ##################
- # Install commands
- ##################
- install: install-python install-test assets ## Install requirements for local development and production
-
- install-python: ## Install python requirements
- pip install -r requirements.txt --upgrade --upgrade-strategy=eager
-
- install-test: ## Install test requirements
- pip install -e .[test] --upgrade --upgrade-strategy=eager
-
- install-migrations-testing-requirements: ## Install migrations testing requirements
- pip install -r requirements_migrations.txt
-
- assets: ## Install static assets
- npm install
- npm run build
-
- venv: ## Create a virtual env and install test and production requirements
- $(shell which python3) -m venv $(VENV)
- $(VENV)/bin/pip install -e .[test]
- $(VENV)/bin/pip install -r docs/requirements.txt
-
- #############################
- # Sandbox management commands
- #############################
- sandbox: install build_sandbox ## Install requirements and create a sandbox
-
- build_sandbox: sandbox_clean sandbox_load_user sandbox_load_data ## Creates a sandbox from scratch
-
- sandbox_clean: ## Clean sandbox images,cache,static and database
- # Remove media
- -rm -rf sandbox/public/media/images
- -rm -rf sandbox/public/media/cache
- -rm -rf sandbox/public/static
- -rm -f sandbox/db.sqlite
- # Create database
- sandbox/manage.py migrate
-
- sandbox_load_user: ## Load user data into sandbox
- sandbox/manage.py loaddata sandbox/fixtures/auth.json
-
- sandbox_load_data: ## Import fixtures and collect static
- # Import some fixtures. Order is important as JSON fixtures include primary keys
- sandbox/manage.py loaddata sandbox/fixtures/child_products.json
- sandbox/manage.py oscar_import_catalogue sandbox/fixtures/*.csv
- sandbox/manage.py oscar_import_catalogue_images sandbox/fixtures/images.tar.gz
- sandbox/manage.py oscar_populate_countries --initial-only
- sandbox/manage.py loaddata sandbox/fixtures/pages.json sandbox/fixtures/ranges.json sandbox/fixtures/offers.json
- sandbox/manage.py loaddata sandbox/fixtures/orders.json
- sandbox/manage.py clear_index --noinput
- sandbox/manage.py update_index catalogue
- sandbox/manage.py thumbnail cleanup
- sandbox/manage.py collectstatic --noinput
-
- sandbox_image: ## Build latest docker image of django-oscar-sandbox
- docker build -t django-oscar-sandbox:latest .
-
- ##################
- # Tests and checks
- ##################
- test: venv ## Run tests
- $(PYTEST)
-
- retest: venv ## Run failed tests only
- $(PYTEST) --lf
-
- coverage: venv ## Generate coverage report
- $(PYTEST) --cov=oscar --cov-report=term-missing
-
- lint:
- @black --check --exclude "migrations/*" src/oscar/
- @black --check --exclude "migrations/*" tests/
- @pylint setup.py src/oscar/
- @pylint setup.py tests/
-
-
- black:
- @black --exclude "migrations/*" src/oscar/
- @black --exclude "migrations/*" tests/
-
- test_migrations: install-migrations-testing-requirements ## Tests migrations
- cd sandbox && ./test_migrations.sh
-
- #######################
- # Translations Handling
- #######################
- extract_translations: ## Extract strings and create source .po files
- cd src/oscar; django-admin.py makemessages -a
-
- compile_translations: ## Compile translation files and create .mo files
- cd src/oscar; django-admin compilemessages
-
- ######################
- # Project Management
- ######################
- clean: ## Remove files not in source control
- find . -type f -name "*.pyc" -delete
- rm -rf nosetests.xml coverage.xml htmlcov *.egg-info *.pdf dist violations.txt
-
- docs: venv ## Compile docs
- make -C docs html SPHINXBUILD=$(PWD)/$(VENV)/bin/sphinx-build
-
- todo: ## Look for areas of the code that need updating when some event has taken place (like Oscar dropping support for a Django version)
- -grep -rnH TODO *.txt
- -grep -rnH TODO src/oscar/apps/
- -grep -rnH "django.VERSION" src/oscar/apps
-
- package: clean
- pip install --upgrade pip twine wheel
- npm ci
- rm -rf src/oscar/static/
- rm -rf dist/
- rm -rf build/
- npm run build
- python setup.py clean --all
- python setup.py sdist bdist_wheel
-
- release: package ## Creates release
- twine upload -s dist/*
|