[web-client] integrate the migrated theme in the development workflows
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
This commit is contained in:
		
							parent
							
								
									1a3543d4b2
								
							
						
					
					
						commit
						2bf77f5d2d
					
				
							
								
								
									
										1
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								Makefile
									
									
									
									
									
								
							| @ -85,7 +85,6 @@ MANAGE += pyenv pyenv.install pyenv.uninstall | ||||
| MANAGE += format.python | ||||
| MANAGE += test.yamllint test.pylint test.black test.pybabel test.unit test.coverage test.robot test.rst test.clean test.themes test.types.dev test.types.ci | ||||
| MANAGE += themes.all themes.fix themes.test | ||||
| MANAGE += themes.simple themes.simple.pygments themes.simple.fix | ||||
| MANAGE += static.build.commit static.build.drop static.build.restore | ||||
| MANAGE += nvm.install nvm.clean nvm.status nvm.nodejs | ||||
| 
 | ||||
|  | ||||
| @ -3,7 +3,8 @@ | ||||
|   "version": "1.0.0", | ||||
|   "type": "module", | ||||
|   "scripts": { | ||||
|     "build": "vite build", | ||||
|     "clean": "rm -Rf node_modules", | ||||
|     "build": "node theme_icons.js && vite build", | ||||
|     "fix": "eslint --fix && stylelint --fix strict 'src/**/*.{css,scss,sass,less,styl,vue,svelte}'", | ||||
|     "icons.html": "node theme_icons.js" | ||||
|   }, | ||||
|  | ||||
| @ -44,7 +44,7 @@ | ||||
| ``center_alignment`` : default ``false`` | ||||
|   When enabled, the results are centered instead of being in the left (or RTL) | ||||
|   side of the screen.  This setting only affects the *desktop layout* | ||||
|   (:origin:`min-width: @tablet <searx/static/themes/simple/src/less/definitions.less>`) | ||||
|   (:origin:`min-width: @tablet <client/simple/src/less/definitions.less>`) | ||||
| 
 | ||||
| .. cache_url: | ||||
| 
 | ||||
|  | ||||
| @ -197,7 +197,7 @@ html_sidebars = { | ||||
|     ], | ||||
| } | ||||
| singlehtml_sidebars = {"index": ["project.html", "localtoc.html"]} | ||||
| html_logo = "../src/brand/searxng-wordmark.svg" | ||||
| html_logo = "../client/simple/src/brand/searxng-wordmark.svg" | ||||
| html_title = "SearXNG Documentation ({})".format(VERSION_STRING) | ||||
| html_show_sourcelink = True | ||||
| 
 | ||||
|  | ||||
| @ -180,10 +180,13 @@ 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 (:ref:`make themes`):: | ||||
| .. | ||||
|    ToDo: vite server is not implemented yet / will be done in a follow up PR | ||||
| 
 | ||||
|   $ LIVE_THEME=simple make run | ||||
|    Alternatively to ``themes.all`` you can run *live builds* of the theme you are | ||||
|    modify (:ref:`make themes`):: | ||||
| 
 | ||||
|     $ LIVE_THEME=simple make run | ||||
| 
 | ||||
| .. _make format.python: | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										12
									
								
								manage
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								manage
									
									
									
									
									
								
							| @ -314,6 +314,18 @@ format.python() { | ||||
|     dump_return $? | ||||
| } | ||||
| 
 | ||||
| docs.prebuild() { | ||||
|     build_msg DOCS "build ${DOCS_BUILD}/includes" | ||||
|     ( | ||||
|         set -e | ||||
|         [ "$VERBOSE" = "1" ] && set -x | ||||
|         mkdir -p "${DOCS_BUILD}/includes" | ||||
|         ./utils/searxng.sh searxng.doc.rst >  "${DOCS_BUILD}/includes/searxng.rst" | ||||
|         pyenv.cmd searxng_extra/docs_prebuild | ||||
|     ) | ||||
|     dump_return $? | ||||
| } | ||||
| 
 | ||||
| # shellcheck disable=SC2119 | ||||
| main() { | ||||
| 
 | ||||
|  | ||||
| @ -59,15 +59,3 @@ data.locales() { | ||||
|     ) | ||||
|     dump_return $? | ||||
| } | ||||
| 
 | ||||
| docs.prebuild() { | ||||
|     build_msg DOCS "build ${DOCS_BUILD}/includes" | ||||
|     ( | ||||
|         set -e | ||||
|         [ "$VERBOSE" = "1" ] && set -x | ||||
|         mkdir -p "${DOCS_BUILD}/includes" | ||||
|         ./utils/searxng.sh searxng.doc.rst >  "${DOCS_BUILD}/includes/searxng.rst" | ||||
|         pyenv.cmd searxng_extra/docs_prebuild | ||||
|     ) | ||||
|     dump_return $? | ||||
| } | ||||
|  | ||||
| @ -25,8 +25,8 @@ nodejs.ensure() { | ||||
| node.env() { | ||||
|     nodejs.ensure | ||||
|     (   set -e | ||||
|         build_msg INSTALL "[npm] ./searx/static/themes/simple/package.json" | ||||
|         npm --prefix searx/static/themes/simple install | ||||
|         build_msg INSTALL "[npm] ./client/simple/package.json" | ||||
|         npm --prefix client/simple install | ||||
|     ) | ||||
|     dump_return $? | ||||
| } | ||||
| @ -44,7 +44,7 @@ node.clean() { | ||||
|     fi | ||||
|     build_msg CLEAN "themes -- locally installed npm dependencies" | ||||
|     (   set -e | ||||
|         npm --prefix searx/static/themes/simple run clean \ | ||||
|         npm --prefix client/simple run clean \ | ||||
| 	    | prefix_stdout "${_Blue}CLEAN    ${_creset} " | ||||
| 	if [ "${PIPESTATUS[0]}" -ne "0" ]; then | ||||
|             return 1 | ||||
|  | ||||
| @ -4,12 +4,7 @@ | ||||
| 
 | ||||
| STATIC_BUILD_COMMIT="[build] /static" | ||||
| STATIC_BUILT_PATHS=( | ||||
|     'searx/static/themes/simple/css' | ||||
|     'searx/static/themes/simple/js' | ||||
|     'searx/static/themes/simple/src/generated/pygments.less' | ||||
|     'searx/static/themes/simple/img' | ||||
|     'searx/templates/simple/searxng-wordmark.min.svg' | ||||
|     'searx/templates/simple/icons.html' | ||||
|     'searx/static/themes/simple' | ||||
| ) | ||||
| 
 | ||||
| static.help(){ | ||||
| @ -101,7 +96,7 @@ static.build.commit() { | ||||
| 
 | ||||
|     (   set -e | ||||
|         # fix & build the themes | ||||
| 	themes.fix | ||||
| 	    themes.fix | ||||
|         themes.all | ||||
| 
 | ||||
|         # add build files | ||||
|  | ||||
| @ -1,100 +1,36 @@ | ||||
| #!/usr/bin/env bash | ||||
| # SPDX-License-Identifier: AGPL-3.0-or-later | ||||
| 
 | ||||
| declare _Blue | ||||
| declare _creset | ||||
| 
 | ||||
| themes.help(){ | ||||
|     cat <<EOF | ||||
| themes.: | ||||
|   all       : test & build all themes | ||||
|   test      : test all themes | ||||
|   fix       : fix JS & CSS (LESS) | ||||
|   live      : to get live builds of CSS & JS use: LIVE_THEME=simple make run | ||||
|   simple.:    test & build simple theme .. | ||||
|     pygments: build pygment's LESS files for simple theme | ||||
|     test    : test simple theme | ||||
|     fix     : fix JS & CSS (LESS) of the simple theme | ||||
| EOF | ||||
| } | ||||
| 
 | ||||
| themes.all() { | ||||
|     (   set -e | ||||
|         node.env | ||||
|         themes.simple | ||||
|         build_msg SIMPLE "theme: run build" | ||||
|         vite.simple.build | ||||
|     ) | ||||
|     dump_return $? | ||||
| } | ||||
| 
 | ||||
| themes.fix() { | ||||
|     (   set -e | ||||
|         node.env | ||||
|         themes.simple.fix | ||||
|         build_msg SIMPLE "theme: fix" | ||||
|         vite.simple.fix | ||||
|     ) | ||||
|     dump_return $? | ||||
| } | ||||
| 
 | ||||
| themes.test() { | ||||
|     (   set -e | ||||
|         node.env | ||||
|         themes.simple.test | ||||
|         # we run a build to test (in CI) | ||||
|         build_msg SIMPLE "theme: run build (to test)" | ||||
|         vite.simple.build | ||||
|     ) | ||||
|     dump_return $? | ||||
| } | ||||
| 
 | ||||
| themes.live() { | ||||
|     local LIVE_THEME="${LIVE_THEME:-${1}}" | ||||
|     case "${LIVE_THEME}" in | ||||
|         simple) | ||||
|             theme="searx/static/themes/${LIVE_THEME}" | ||||
|             ;; | ||||
|         '') | ||||
|             die 42 "missing theme argument" | ||||
|             ;; | ||||
|         *) | ||||
|             die 42 "unknown theme '${LIVE_THEME}' // [simple]'" | ||||
|             ;; | ||||
|     esac | ||||
|     build_msg SIMPLE "theme: $1 (live build)" | ||||
|     node.env | ||||
|     themes.simple.pygments | ||||
|     cd "${theme}" | ||||
|     { | ||||
|         npm run watch | ||||
|     } # 2>&1 \ | ||||
|       #       | prefix_stdout "${_Blue}THEME ${1} ${_creset}  " \ | ||||
|       #       | grep -E --ignore-case --color 'error[s]?[:]? |warning[s]?[:]? |' | ||||
| } | ||||
| 
 | ||||
| themes.simple() { | ||||
|     (   set -e | ||||
|         themes.simple.pygments | ||||
|         build_msg SIMPLE "theme: run build" | ||||
|         # "run build" includes tests from eslint and stylelint | ||||
|         npm --prefix searx/static/themes/simple run build | ||||
|     ) | ||||
|     dump_return $? | ||||
| } | ||||
| 
 | ||||
| themes.simple.pygments() { | ||||
|     build_msg PYGMENTS "searxng_extra/update/update_pygments.py" | ||||
|     pyenv.cmd python searxng_extra/update/update_pygments.py \ | ||||
|         | prefix_stdout "${_Blue}PYGMENTS ${_creset} " | ||||
|     if [ "${PIPESTATUS[0]}" -ne "0" ]; then | ||||
|         build_msg PYGMENTS "building LESS files for pygments failed" | ||||
|         return 1 | ||||
|     fi | ||||
|     return 0 | ||||
| } | ||||
| 
 | ||||
| themes.simple.fix() { | ||||
|     build_msg SIMPLE "theme: fix" | ||||
|     npm --prefix searx/static/themes/simple run fix | ||||
|     dump_return $? | ||||
| } | ||||
| 
 | ||||
| themes.simple.test() { | ||||
|     build_msg SIMPLE "theme: run test" | ||||
|     npm --prefix searx/static/themes/simple run test | ||||
|     dump_return $? | ||||
| } | ||||
|  | ||||
| @ -1,6 +1,8 @@ | ||||
| #!/usr/bin/env bash | ||||
| # SPDX-License-Identifier: AGPL-3.0-or-later | ||||
| 
 | ||||
| declare _Blue | ||||
| declare _creset | ||||
| 
 | ||||
| vite.help(){ | ||||
|     cat <<EOF | ||||
| @ -12,25 +14,24 @@ EOF | ||||
| } | ||||
| 
 | ||||
| VITE_SIMPLE_THEME="${REPO_ROOT}/client/simple" | ||||
| VITE_SIMPLE_DIST="${REPO_ROOT}/searx/static/themes/simple" | ||||
| 
 | ||||
| vite.simple.dev() { | ||||
| 
 | ||||
|     (   set -e | ||||
|         build_msg SIMPLE "start server for FE development of: ${VITE_SIMPLE_THEME}" | ||||
|         pushd "${VITE_SIMPLE_THEME}" | ||||
|         npm install | ||||
|         npm exec -- vite | ||||
|         popd &> /dev/null | ||||
|     ) | ||||
| 
 | ||||
| } | ||||
| # ToDo: vite server is not implemented yet / will be done in a follow up PR | ||||
| # | ||||
| # vite.simple.dev() { | ||||
| #     (   set -e | ||||
| #         build_msg SIMPLE "start server for FE development of: ${VITE_SIMPLE_THEME}" | ||||
| #         pushd "${VITE_SIMPLE_THEME}" | ||||
| #         npm install | ||||
| #         npm exec -- vite | ||||
| #         popd &> /dev/null | ||||
| #     ) | ||||
| # } | ||||
| 
 | ||||
| vite.simple.build() { | ||||
| 
 | ||||
|     # build static files of the simple theme | ||||
| 
 | ||||
|     (   set -e | ||||
|         templates.simple.pygments | ||||
| 
 | ||||
|         node.env | ||||
|         build_msg SIMPLE "run build of theme from: ${VITE_SIMPLE_THEME}" | ||||
| 
 | ||||
|         pushd "${VITE_SIMPLE_THEME}" | ||||
| @ -38,6 +39,24 @@ vite.simple.build() { | ||||
|         npm run fix | ||||
|         npm run icons.html | ||||
|         npm run build | ||||
| 
 | ||||
|         popd &> /dev/null | ||||
|     ) | ||||
| } | ||||
| 
 | ||||
| vite.simple.fix() { | ||||
|     (   set -e | ||||
|         node.env | ||||
|         npm --prefix client/simple run fix | ||||
|     ) | ||||
| } | ||||
| 
 | ||||
| templates.simple.pygments() { | ||||
|     build_msg PYGMENTS "searxng_extra/update/update_pygments.py" | ||||
|     pyenv.cmd python searxng_extra/update/update_pygments.py \ | ||||
|         | prefix_stdout "${_Blue}PYGMENTS ${_creset} " | ||||
|     if [ "${PIPESTATUS[0]}" -ne "0" ]; then | ||||
|         build_msg PYGMENTS "building LESS files for pygments failed" | ||||
|         return 1 | ||||
|     fi | ||||
|     return 0 | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Markus Heiser
						Markus Heiser