forked from kiwitcms/Kiwi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
179 lines (142 loc) · 5.88 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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
default: help
PATH_TO_SITE_PACKAGES = $(shell python -c 'from distutils.sysconfig import get_python_lib; print(get_python_lib())')
VERSION = $(shell python -m tcms)
FLAKE8_EXCLUDE=.git
.PHONY: flake8
flake8:
@flake8 --exclude=$(FLAKE8_EXCLUDE) tcms *.py kiwi_lint tcms_settings_dir
DJANGO_SETTINGS_MODULE="tcms.settings.test"
ifeq ($(TEST_DB),MySQL)
DJANGO_SETTINGS_MODULE="tcms.settings.test.mariadb"
endif
ifeq ($(TEST_DB),MariaDB)
DJANGO_SETTINGS_MODULE="tcms.settings.test.mariadb"
endif
ifeq ($(TEST_DB),Postgres)
DJANGO_SETTINGS_MODULE="tcms.settings.test.postgresql"
endif
.PHONY: test
test:
./manage.py compilemessages
if [ "$$TEST_DB" == "all" ]; then \
for DB in SQLite MySQL Postgres MariaDB; do \
TEST_DB=$$DB make test; \
done; \
else \
PYTHONWARNINGS=d coverage run --source='.' ./manage.py test -v2 --noinput --settings=$(DJANGO_SETTINGS_MODULE); \
fi
# test for missing migrations
# https://stackoverflow.com/questions/54177838/
.PHONY: test_for_missing_migrations
test_for_missing_migrations:
./manage.py migrate --settings=$(DJANGO_SETTINGS_MODULE)
./manage.py makemigrations --check --settings=$(DJANGO_SETTINGS_MODULE)
.PHONY: check
check: flake8 test
.PHONY: pylint
pylint:
pylint -d missing-docstring *.py kiwi_lint/
PYTHONPATH=.:./tcms/ DJANGO_SETTINGS_MODULE=$(DJANGO_SETTINGS_MODULE) \
pylint \
--load-plugins=pylint_django.checkers.migrations \
--load-plugins=pylint.extensions.no_self_use \
-d missing-docstring -d duplicate-code -d new-db-field-with-default --module-naming-style=any tcms/*/migrations/*
PYTHONPATH=.:./tcms/ DJANGO_SETTINGS_MODULE=$(DJANGO_SETTINGS_MODULE) \
pylint \
--load-plugins=pylint_django \
--load-plugins=kiwi_lint \
--load-plugins=pylint.extensions.docparams \
--load-plugins=pylint.extensions.no_self_use \
-d missing-docstring -d duplicate-code -d one-to-one-field -d similar-string \
--ignore migrations tcms/ tcms_settings_dir/
.PHONY: similar_strings
similar_strings:
PYTHONPATH=.:./tcms/ DJANGO_SETTINGS_MODULE=$(DJANGO_SETTINGS_MODULE) pylint --load-plugins=kiwi_lint -d all -e similar-string tcms/ tcms_settings_dir/
.PHONY: pylint_site_packages
pylint_site_packages:
if [ -d "$(PATH_TO_SITE_PACKAGES)" ]; then \
PYTHONPATH=.:./tcms/ DJANGO_SETTINGS_MODULE=tcms.settings.common \
pylint --load-plugins=kiwi_lint --disable=all --enable=avoid-generic-foreign-key \
--ignore=setuptools $(PATH_TO_SITE_PACKAGES) ;\
fi
.PHONY: bandit
bandit:
bandit -r *.py tcms/ kiwi_lint/ tcms_settings_dir/
.PHONY: bandit_site_packages
bandit_site_packages:
if [ -d "$(PATH_TO_SITE_PACKAGES)" ]; then \
bandit -a vuln -r $(PATH_TO_SITE_PACKAGES); \
fi
.PHONY: docker-image
docker-image:
sudo rm -rf dist/
docker pull registry.access.redhat.com/ubi9-minimal
docker build -t kiwitcms/buildroot -f Dockerfile.buildroot .
docker run --rm --security-opt label=disable \
-v `pwd`:/host --entrypoint /bin/cp kiwitcms/buildroot \
-r /Kiwi/dist/ /host/
docker run --rm --security-opt label=disable \
-v `pwd`:/host --entrypoint /bin/cp kiwitcms/buildroot \
-r /venv /host/dist/
docker build -t kiwitcms/kiwi:latest .
docker tag kiwitcms/kiwi:latest quay.io/kiwitcms/kiwi:latest
.PHONY: docker-manifest
docker-manifest:
docker manifest create \
quay.io/kiwitcms/version:$(VERSION) \
quay.io/kiwitcms/version:$(VERSION)-x86_64 \
quay.io/kiwitcms/version:$(VERSION)-aarch64
docker manifest push quay.io/kiwitcms/version:$(VERSION)
.PHONY: test-docker-image
test-docker-image: docker-image
./tests/runner.sh
.PHONY: docs
docs:
make -C docs/ html
# checks if all of our documentation/source files are under git!
# this is necessary because ReadTheDocs doesn't call `make' but uses
# conf.py and builds the documentation itself! Since we have some
# auto-generated API docs we want to make sure that we didn't forget
# to regenerate them after code changes!
.PHONY: check-docs-source-in-git
check-docs-source-in-git: docs
git status
if [ -n "$$(git status --short)" ]; then \
git diff; \
echo "FAIL: unmerged docs changes. Pobably auto-generated!"; \
echo "HELP: execute 'make docs' and commit to fix this"; \
exit 1; \
fi
.PHONY: doc8
doc8:
doc8 docs/source *.rst
.PHONY: help
help:
@echo 'Usage: make [command]'
@echo ''
@echo 'Available commands:'
@echo ''
@echo ' flake8 - Check Python code style throughout whole source code tree'
@echo ' check - Run all tests.'
@echo ' docker-image - Build Docker image'
@echo ' docker-manifest - Build Docker manifest for multi-arch images'
@echo ' help - Show this help message and exit. Default if no command is given'
# only necessary b/c in Travis we call `make smt`
.PHONY: coverity
coverity:
@echo 'Everything is handled by the Coverity add-on in Travis'
LOCAL_DJANGO_PO=tcms/locale/en/LC_MESSAGES/django.po
.PHONY: messages
messages:
./manage.py makemessages --locale en --no-obsolete \
--ignore "test*.py" --ignore "docs/*" --ignore "kiwi_lint/*" \
--ignore "*.egg-info/*" --ignore "*/node_modules/*"
git checkout tcms/locale/eo_UY/
for APP_NAME in "github-app" "github-marketplace" "enterprise" "tenants" "trackers-integration"; do \
echo "---- Trying to merge translations from ../$$APP_NAME"; \
if [ -d "../$$APP_NAME" ]; then \
REMOTE_DJANGO_PO=`find ../$$APP_NAME -type f -wholename "*/locale/en/LC_MESSAGES/django.po"`; \
msgcat --use-first -o $(LOCAL_DJANGO_PO) $(LOCAL_DJANGO_PO) $$REMOTE_DJANGO_PO; \
fi; \
done
ls tcms/locale/en/LC_MESSAGES/*.po | xargs -n 1 -I @ msgattrib -o @ --no-fuzzy @