Skip to content

Commit

Permalink
Merge pull request #664 from return42/themes.live
Browse files Browse the repository at this point in the history
[mod] manage: add themes.live command (rebuild on modification)
  • Loading branch information
return42 committed Jan 4, 2022
2 parents 8eb3167 + c7f2740 commit 00d3a74
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 18 deletions.
6 changes: 1 addition & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
19 changes: 12 additions & 7 deletions docs/dev/makefile.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down Expand Up @@ -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:

Expand Down
5 changes: 5 additions & 0 deletions docs/dev/quickstart.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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:

Expand Down
46 changes: 40 additions & 6 deletions manage
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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"
Expand Down Expand Up @@ -701,14 +715,37 @@ 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
dump_return $?
}

themes.simple() {
local static="searx/static/themes/simple"
( set -e
build_msg GRUNT "theme: simple"
npm --prefix searx/static/themes/simple run build
Expand All @@ -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 $?
Expand Down

0 comments on commit 00d3a74

Please sign in to comment.