summaryrefslogtreecommitdiff
path: root/Makefile
blob: 84f0ac24b96f2ad4495838524058ac1f41b4ba0f (plain)
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
# -*- coding: utf-8; mode: makefile-gmake -*-
.DEFAULT_GOAL=help
include ./.config.mk
include utils/makefile.include

PYOBJECTS = searx
DOC       = docs
PY_SETUP_EXTRAS ?= \[test\]

include utils/makefile.python
include utils/makefile.sphinx

all: clean install

PHONY += help-min help-all help

help: help-min
	@echo  ''
	@echo  'to get more help:  make help-all'

help-min:
	@echo  '  test      - run developer tests'
	@echo  '  docs      - build documentation'
	@echo  '  docs-live - autobuild HTML documentation while editing'
	@echo  '  run       - run developer instance'
	@echo  '  install   - developer install (./local)'
	@echo  '  uninstall - uninstall (./local)'
	@echo  '  gh-pages  - build docs & deploy on gh-pages branch'
	@echo  '  clean     - drop builds and environments'
	@echo  '  project   - re-build generic files of the searx project'
	@echo  ''
	@echo  'environment'
	@echo  '  SEARX_URL = $(SEARX_URL)'
	@echo  '  GIT_URL   = $(GIT_URL)'
	@echo  '  DOCS_URL  = $(DOCS_URL)'
	@echo  ''
	@$(MAKE) -e -s make-help

help-all: help-min
	@echo  ''
	@$(MAKE) -e -s python-help
	@echo  ''
	@$(MAKE) -e -s docs-help

PHONY += install
install: pyenvinstall

PHONY += uninstall
uninstall: pyenvuninstall

PHONY += clean
clean: pyclean docs-clean
	$(call cmd,common_clean)

PHONY += run
run:  pyenvinstall
	$(Q) ( \
	sed -i -e "s/debug : False/debug : True/g" ./searx/settings.yml ; \
	sleep 2 ; \
	xdg-open http://127.0.0.1:8888/ ; \
	sleep 3 ; \
	sed -i -e "s/debug : True/debug : False/g" ./searx/settings.yml ; \
	) &
	$(PY_ENV)/bin/python ./searx/webapp.py

# docs
# ----

PHONY += docs

docs:  pyenvinstall sphinx-doc prebuild-includes
	$(call cmd,sphinx,html,docs,docs)

PHONY += docs-live
docs-live:  pyenvinstall sphinx-live prebuild-includes
	$(call cmd,sphinx_autobuild,html,docs,docs)

prebuild-includes:
	@mkdir -p $(DOCS_BUILD)/includes
	@./utils/searx.sh doc | cat > $(DOCS_BUILD)/includes/searx.rst
	@./utils/filtron.sh doc | cat > $(DOCS_BUILD)/includes/filtron.rst
	@./utils/morty.sh doc | cat > $(DOCS_BUILD)/includes/morty.rst


$(GH_PAGES)::
	@echo "doc available at --> $(DOCS_URL)"

# update project files
# --------------------

PHONY += project engines-languages

project: searx/data/engines_languages.json

searx/data/engines_languages.json:  pyenvinstall
	$(PY_ENV_ACT); python utils/fetch_languages.py
	mv engines_languages.json searx/data/engines_languages.json
	mv languages.py searx/languages.py

# test
# ----

PHONY += test test.sh test.pylint test.pep8 test.unit test.robot

test: test.pylint test.pep8 test.unit test.robot

# TODO: balance linting with pylint

test.pylint: pyenvinstall
	$(call cmd,pylint,searx/preferences.py)
	$(call cmd,pylint,searx/testing.py)

# ubu1604: uses shellcheck v0.3.7 (from 04/2015), no longer supported!
test.sh:
	shellcheck -x utils/lib.sh
	shellcheck -x utils/filtron.sh
	shellcheck -x utils/searx.sh
	shellcheck -x utils/morty.sh
	shellcheck -x utils/lxc.sh
	shellcheck -x utils/lxc-searx.env
	shellcheck -x .config.sh

test.pep8: pyenvinstall
	$(PY_ENV_ACT); ./manage.sh pep8_check

test.unit: pyenvinstall
	$(PY_ENV_ACT); ./manage.sh unit_tests

test.robot: pyenvinstall
	$(PY_ENV_ACT); ./manage.sh install_geckodriver
	$(PY_ENV_ACT); ./manage.sh robot_tests

.PHONY: $(PHONY)