diff --git a/.editorconfig b/.editorconfig index 6a1922ac7..8c626c425 100644 --- a/.editorconfig +++ b/.editorconfig @@ -14,6 +14,14 @@ charset = utf-8 # code formatter accepts length of 120, but editor should prefer 80 max_line_length = 80 +[{*.sh,manage}] +indent_style = space +indent_size = 4 + +# shfmt options +shell_variant = bash +switch_case_indent = true + [*.html] # in the jinja templates we use indent size of 2 and we do not use tabs indent_size = 2 diff --git a/Makefile b/Makefile index 4c633e1fc..860b91704 100644 --- a/Makefile +++ b/Makefile @@ -47,8 +47,8 @@ search.checker.%: install $(Q)./manage pyenv.cmd searxng-checker -v "$(subst _, ,$(patsubst search.checker.%,%,$@))" PHONY += test ci.test test.shell -ci.test: test.yamllint test.black test.types.ci test.pylint test.unit test.robot test.rst test.shell test.pybabel -test: test.yamllint test.black test.types.dev test.pylint test.unit test.robot test.rst test.shell +ci.test: test.yamllint test.black test.types.ci test.pylint test.unit test.robot test.rst test.shell test.shfmt test.pybabel +test: test.yamllint test.black test.types.dev test.pylint test.unit test.robot test.rst test.shell test.shfmt test.shell: $(Q)shellcheck -x -s dash \ container/entrypoint.sh @@ -64,6 +64,8 @@ test.shell: utils/searxng.sh $(Q)$(MTOOLS) build_msg TEST "$@ OK" +PHONY += format +format: format.python format.shell # wrap ./manage script @@ -77,8 +79,8 @@ MANAGE += gecko.driver MANAGE += node.env node.env.dev node.clean MANAGE += py.build py.clean 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 += format.python format.shell +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 test.shfmt MANAGE += themes.all themes.simple themes.fix themes.lint themes.test MANAGE += static.build.commit static.build.drop static.build.restore MANAGE += nvm.install nvm.clean nvm.status nvm.nodejs diff --git a/docs/dev/makefile.rst b/docs/dev/makefile.rst index 4781b2ce6..ea7ddecd8 100644 --- a/docs/dev/makefile.rst +++ b/docs/dev/makefile.rst @@ -188,24 +188,22 @@ sources of the theme need to be rebuild. You can do that by running:: $ LIVE_THEME=simple make run -.. _make format.python: +.. _make format: -``make format.python`` +``make format`` ====================== -Format Python source code using `Black code style`_. See ``$BLACK_OPTIONS`` -and ``$BLACK_TARGETS`` in :origin:`Makefile`. - -.. attention:: - - We stuck at Black 22.12.0, please read comment in PR `Bump black from 22.12.0 - to 23.1.0`_ - -.. _Bump black from 22.12.0 to 23.1.0: - https://github.com/searxng/searxng/pull/2159#pullrequestreview-1284094735 - .. _Black code style: https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html +.. _shfmt: https://github.com/mvdan/sh?tab=readme-ov-file#shfmt +.. _EditorConfig: https://github.com/patrickvane/shfmt?tab=readme-ov-file#description + +- Format Python source code using `Black code style`_. See ``$BLACK_OPTIONS`` + and ``$BLACK_TARGETS`` in :origin:`Makefile`. + +- Format Shell scripts using shfmt_. The formatter ``shfmt`` reads the rules + from the EditorConfig_ files. + .. _make clean: diff --git a/docs/dev/quickstart.rst b/docs/dev/quickstart.rst index 1f3fee7cc..305a8686e 100644 --- a/docs/dev/quickstart.rst +++ b/docs/dev/quickstart.rst @@ -27,7 +27,7 @@ Here is how a minimal workflow looks like: 1. *start* hacking 2. *run* your code: :ref:`make run` -3. *format & test* your code: :ref:`make format.python` and :ref:`make test` +3. *format & test* your code: :ref:`make format` and :ref:`make test` If you think at some point something fails, go back to *start*. Otherwise, choose a meaningful commit message and we are happy to receive your pull diff --git a/manage b/manage index 7d2305e65..df1c01c21 100755 --- a/manage +++ b/manage @@ -64,6 +64,12 @@ RST_FILES=( 'README.rst' ) +SHFMT_SCRIPTS=( + "./manage" + "./container" + "./utils" +) + help() { nvm.help cat <