-
Notifications
You must be signed in to change notification settings - Fork 1
/
Makefile
132 lines (102 loc) · 4.09 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
### Defensive settings for make:
# https://tech.davis-hansson.com/p/make/
SHELL:=bash
.ONESHELL:
.SHELLFLAGS:=-xeu -o pipefail -O inherit_errexit -c
.SILENT:
.DELETE_ON_ERROR:
MAKEFLAGS+=--warn-undefined-variables
MAKEFLAGS+=--no-builtin-rules
# We like colors
# From: https://coderwall.com/p/izxssa/colored-makefile-for-golang-projects
RED=`tput setaf 1`
GREEN=`tput setaf 2`
RESET=`tput sgr0`
YELLOW=`tput setaf 3`
# Plone Version
PLONE_VERSION=6
# Set distributions still in development
DISTRIBUTIONS="portal_edu"
ALLOWED_DISTRIBUTIONS=$(DISTRIBUTIONS)
# Docker Image name
IMAGE_NAME=ghcr.io/plonegovbr/portal_edu
IMAGE_TAG=latest
PLONE6=6.0-latest
# Python checks
PYTHON?=python3
# installed?
ifeq (, $(shell which $(PYTHON) ))
$(error "PYTHON=$(PYTHON) not found in $(PATH)")
endif
# version ok?
PYTHON_VERSION_MIN=3.8
PYTHON_VERSION_OK=$(shell $(PYTHON) -c "import sys; print((int(sys.version_info[0]), int(sys.version_info[1])) >= tuple(map(int, '$(PYTHON_VERSION_MIN)'.split('.'))))")
ifeq ($(PYTHON_VERSION_OK),0)
$(error "Need python $(PYTHON_VERSION) >= $(PYTHON_VERSION_MIN)")
endif
BACKEND_FOLDER=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
GIT_FOLDER=$(BACKEND_FOLDER)/.git
all: build
# Add the following 'help' target to your Makefile
# And add help text after each target name starting with '\#\#'
.PHONY: help
help: ## This help message
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
bin/pip bin/tox bin/mxdev:
@echo "$(GREEN)==> Setup Virtual Env$(RESET)"
$(PYTHON) -m venv .
bin/pip install -U "pip" "wheel" "cookiecutter" "mxdev" "tox" "pre-commit"
if [ -d $(GIT_FOLDER) ]; then bin/pre-commit install; else echo "$(RED) Not installing pre-commit$(RESET)";fi
constraints-mxdev.txt: bin/tox
bin/tox -e init
.PHONY: config
config: bin/pip ## Create instance configuration
@echo "$(GREEN)==> Create instance configuration$(RESET)"
bin/cookiecutter -f --no-input --config-file instance.yaml gh:plone/cookiecutter-zope-instance
.PHONY: build-dev
build-dev: config constraints-mxdev.txt ## pip install Plone packages
@echo "$(GREEN)==> Setup Build$(RESET)"
bin/pip install -r requirements-mxdev.txt
.PHONY: install
install: build-dev ## Install Plone 6.0
.PHONY: build
build: build-dev ## Install Plone 6.0
.PHONY: clean
clean: ## Remove old virtualenv and creates a new one
@echo "$(RED)==> Cleaning environment and build$(RESET)"
rm -rf bin lib lib64 include share etc var inituser pyvenv.cfg .installed.cfg instance .tox .pytest_cache requirements-mxdev.txt constraints-mxdev.txt
.PHONY: start
start: ## Start a Plone instance on localhost:8080
ALLOWED_DISTRIBUTIONS=$(ALLOWED_DISTRIBUTIONS) DEVELOP_DISTRIBUTIONS=$(DISTRIBUTIONS) PYTHONWARNINGS=ignore ./bin/runwsgi instance/etc/zope.ini
.PHONY: console
console: ## Start a zope console
ALLOWED_DISTRIBUTIONS=$(ALLOWED_DISTRIBUTIONS) DEVELOP_DISTRIBUTIONS=$(DISTRIBUTIONS) PYTHONWARNINGS=ignore ./bin/zconsole debug instance/etc/zope.conf
.PHONY: format
format: bin/tox ## Format the codebase according to our standards
@echo "$(GREEN)==> Format codebase$(RESET)"
bin/tox -e format
.PHONY: lint
lint: ## check code style
bin/tox -e lint
# i18n
bin/i18ndude: bin/pip
@echo "$(GREEN)==> Install translation tools$(RESET)"
bin/pip install i18ndude
.PHONY: i18n
i18n: bin/i18ndude ## Update locales
@echo "$(GREEN)==> Updating locales$(RESET)"
bin/update_dist_locale
# Tests
.PHONY: test
test: bin/tox constraints-mxdev.txt ## run tests
ALLOWED_DISTRIBUTIONS=$(ALLOWED_DISTRIBUTIONS) DEVELOP_DISTRIBUTIONS=$(DISTRIBUTIONS) bin/tox -e test
.PHONY: test-coverage
test-coverage: bin/tox constraints-mxdev.txt ## run tests with coverage
ALLOWED_DISTRIBUTIONS=$(ALLOWED_DISTRIBUTIONS) DEVELOP_DISTRIBUTIONS=$(DISTRIBUTIONS) bin/tox -e coverage
# Docker image
.PHONY: build-image
build-image: ## Build Docker Image
@DOCKER_BUILDKIT=1 docker build . -t $(IMAGE_NAME):$(IMAGE_TAG) -f Dockerfile --build-arg PLONE_VERSION=$(PLONE_VERSION)
.PHONY: run-image
run-image: build-image ## Build Docker Image
docker run --rm -it -p 8080:8080 $(IMAGE_NAME):$(IMAGE_TAG)