summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile6
-rw-r--r--docs/dev/makefile.rst19
-rw-r--r--docs/dev/quickstart.rst5
-rwxr-xr-xmanage46
4 files changed, 58 insertions, 18 deletions
diff --git a/Makefile b/Makefile
index e91d81e7e..747083d08 100644
--- a/Makefile
+++ b/Makefile
@@ -25,11 +25,7 @@ help:
PHONY += run
run: install
- $(Q) ( \
- sleep 2 ; \
- xdg-open http://127.0.0.1:8888/ ; \
- ) &
- SEARXNG_DEBUG=1 ./manage pyenv.cmd python -m searx.webapp
+ $(Q)./manage webapp.run
PHONY += install uninstall
install uninstall:
diff --git a/docs/dev/makefile.rst b/docs/dev/makefile.rst
index 66def0b3a..8c9058c34 100644
--- a/docs/dev/makefile.rst
+++ b/docs/dev/makefile.rst
@@ -13,7 +13,7 @@ Makefile
To install system requirements follow :ref:`buildhosts`.
-All relevant build tasks are implemented in :origin:`manage.sh` and for CI or
+All relevant build tasks are implemented in :origin:`manage` and for CI or
IDE integration a small ``Makefile`` wrapper is available. If you are not
familiar with Makefiles, we recommend to read gnu-make_ introduction.
@@ -173,14 +173,19 @@ Install latest Node.js_ LTS locally (uses nvm_)::
To get up a running a developer instance simply call ``make run``. This enables
*debug* option in :origin:`searx/settings.yml`, starts a ``./searx/webapp.py``
-instance, disables *debug* option again and opens the URL in your favorite WEB
-browser (:man:`xdg-open`)::
+instance and opens the URL in your favorite WEB browser (:man:`xdg-open`)::
$ make run
- PYENV OK
- SEARXNG_DEBUG=1 ./manage.sh pyenv.cmd python ./searx/webapp.py
- ...
- INFO:werkzeug: * Running on http://127.0.0.1:8888/ (Press CTRL+C to quit)
+
+Changes to theme's HTML templates (jinja2) are instant. Changes to the CSS & JS
+sources of the theme need to be rebuild. You can do that by running::
+
+ $ make themes.all
+
+Alternatively to ``themes.all`` you can run *live builds* of the theme you are
+modify::
+
+ $ LIVE_THEME=simple make run
.. _make clean:
diff --git a/docs/dev/quickstart.rst b/docs/dev/quickstart.rst
index d2b666c09..db52a2d80 100644
--- a/docs/dev/quickstart.rst
+++ b/docs/dev/quickstart.rst
@@ -40,10 +40,15 @@ JavaScript:
Alternatively you can also compile selective the theme you have modified,
e.g. the *simple* theme.
+
.. code:: sh
make themes.simple
+.. tip::
+
+ To get live builds while modifying CSS & JS use: ``LIVE_THEME=simple make run``
+
If you finished your *tests* you can start to commit your changes. To separate
the modified source code from the build products first run:
diff --git a/manage b/manage
index bf202cb67..9f99ad4fa 100755
--- a/manage
+++ b/manage
@@ -120,6 +120,17 @@ fi
# needed by sphinx-docs
export DOCS_BUILD
+webapp.run() {
+ SEARXNG_DEBUG=1 pyenv.cmd python -m searx.webapp &
+ sleep 3
+ if [ "${LIVE_THEME}" ]; then
+ themes.live "${LIVE_THEME}" &
+ fi
+ xdg-open http://127.0.0.1:8888/
+ wait -n
+ kill 0
+}
+
buildenv() {
# settings file from repository's working tree are used by default
@@ -514,12 +525,15 @@ gecko.driver() {
dump_return $?
}
-node.env() {
+nodejs.ensure() {
if ! nvm.min_node "${NODE_MINIMUM_VERSION}"; then
info_msg "install Node.js by NVM"
nvm.nodejs
fi
+}
+node.env() {
+ nodejs.ensure
( set -e
build_msg INSTALL "searx/static/themes/oscar/package.json"
@@ -701,6 +715,30 @@ themes.all() {
dump_return $?
}
+themes.live() {
+ local LIVE_THEME="${LIVE_THEME:-${1}}"
+ case "${LIVE_THEME}" in
+ simple|oscar)
+ theme="searx/static/themes/${LIVE_THEME}"
+ ;;
+ '')
+ die_caller 42 "missing theme argument"
+ ;;
+ *)
+ die_caller 42 "unknown theme '${LIVE_THEME}' // [simple|oscar]'"
+ ;;
+ esac
+ build_msg GRUNT "theme: $1 (live build)"
+ nodejs.ensure
+ cd "${theme}"
+ {
+ npm install
+ npm run watch
+ } 2>&1 \
+ | prefix_stdout "${_Blue}THEME ${1} ${_creset} " \
+ | grep -E --ignore-case --color 'error[s]?[:]? |warning[s]?[:]? |'
+}
+
themes.oscar() {
build_msg GRUNT "theme: oscar"
npm --prefix searx/static/themes/oscar run build
@@ -708,7 +746,6 @@ themes.oscar() {
}
themes.simple() {
- local static="searx/static/themes/simple"
( set -e
build_msg GRUNT "theme: simple"
npm --prefix searx/static/themes/simple run build
@@ -718,10 +755,7 @@ themes.simple() {
themes.simple.test() {
build_msg TEST "theme: simple"
- if ! nvm.min_node "${NODE_MINIMUM_VERSION}"; then
- info_msg "install Node.js by NVM"
- nvm.nodejs
- fi
+ nodejs.ensure
npm --prefix searx/static/themes/simple install
npm --prefix searx/static/themes/simple run test
dump_return $?