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 $?