summaryrefslogtreecommitdiff
path: root/utils/searx.sh
diff options
context:
space:
mode:
authorAlexandre Flament <alex@al-f.net>2021-07-30 18:57:00 +0200
committerGitHub <noreply@github.com>2021-07-30 18:57:00 +0200
commit38ee88b3905148460e30982715277e7b30857629 (patch)
tree61cf8004cc09fefeffaafb082b8ce86a1c959da4 /utils/searx.sh
parent3b97657f3bbe9bd84a99d46ad1e26391d62ba496 (diff)
parent5b3eeb6e54d4b88adccdf847c32d8102ff6202a5 (diff)
Merge pull request #229 from dalf/version-from-git
version based on git
Diffstat (limited to 'utils/searx.sh')
-rwxr-xr-xutils/searx.sh75
1 files changed, 56 insertions, 19 deletions
diff --git a/utils/searx.sh b/utils/searx.sh
index f02611059..3ebe5df11 100755
--- a/utils/searx.sh
+++ b/utils/searx.sh
@@ -213,20 +213,26 @@ main() {
*) usage "$_usage"; exit 42;;
esac ;;
install)
- rst_title "SearXNG (install)" part
sudo_or_exit
case $2 in
- all) install_all ;;
+ all)
+ rst_title "SearXNG (install)" part
+ install_all
+ ;;
user)
+ rst_title "SearXNG (install user)"
verify_continue_install
assert_user
;;
pyenv)
+ rst_title "SearXNG (install pyenv)"
verify_continue_install
create_pyenv
;;
searx-src)
+ rst_title "SearXNG (install searx-src)"
verify_continue_install
+ assert_user
clone_searx
install_DOT_CONFIG
init_SEARX_SRC
@@ -241,6 +247,7 @@ main() {
install_settings
;;
uwsgi)
+ rst_title "SearXNG (install uwsgi)"
verify_continue_install
install_searx_uwsgi
if ! service_is_available "http://${SEARX_INTERNAL_HTTP}"; then
@@ -248,9 +255,11 @@ main() {
fi
;;
packages)
+ rst_title "SearXNG (install packages)"
pkg_install "$SEARX_PACKAGES"
;;
buildhost)
+ rst_title "SearXNG (install buildhost)"
pkg_install "$SEARX_PACKAGES"
pkg_install "$BUILD_PACKAGES"
;;
@@ -377,6 +386,11 @@ installations that were installed with this script."
assert_user() {
rst_title "user $SERVICE_USER" section
echo
+ if getent passwd "$SERVICE_USER" > /dev/null; then
+ echo "user exists"
+ return 0
+ fi
+
tee_stderr 1 <<EOF | bash | prefix_stdout
useradd --shell /bin/bash --system \
--home-dir "$SERVICE_HOME" \
@@ -431,31 +445,36 @@ EOF
prompt_installation_status(){
- local state branch remote remote_url instance_setting
+ # shellcheck disable=SC2034
+ local GIT_URL GIT_BRANCH VERSION_STRING VERSION_TAG
+ local ret_val state branch remote remote_url
state="$(install_searx_get_state)"
- branch="$(git name-rev --name-only HEAD)"
- remote="$(git config branch."${branch}".remote)"
- remote_url="$(git config remote."${remote}".url)"
case $state in
- missing-searx-clone)
+ missing-searx-clone|missing-searx-pyenv)
info_msg "${_BBlue}(status: $(install_searx_get_state))${_creset}"
return 0
;;
*)
- warn_msg "SearXNG instance already installed at: $SEARX_SRC"
- warn_msg "status: ${_BBlue}$(install_searx_get_state)${_creset} "
- instance_setting="$(prompt_installation_setting brand.git_url)"
- if ! [ "$instance_setting" = "$remote_url" ]; then
- warn_msg "instance's brand.git_url: '${instance_setting}'" \
+ info_msg "SearXNG instance already installed at: $SEARX_SRC"
+ info_msg "status: ${_BBlue}$(install_searx_get_state)${_creset} "
+ branch="$(git name-rev --name-only HEAD)"
+ remote="$(git config branch."${branch}".remote)"
+ remote_url="$(git config remote."${remote}".url)"
+ eval "$(get_installed_version_variables)"
+
+ ret_val=0
+ if ! [ "$GIT_URL" = "$remote_url" ]; then
+ warn_msg "instance's git URL: '${GIT_URL}'" \
"differs from local clone's remote URL: ${remote_url}"
+ ret_val=42
fi
- instance_setting="$(prompt_installation_setting brand.git_branch)"
- if ! [ "$instance_setting" = "$branch" ]; then
- warn_msg "instance brand.git_branch: ${instance_setting}" \
+ if ! [ "$GIT_BRANCH" = "$branch" ]; then
+ warn_msg "instance git branch: ${GIT_BRANCH}" \
"differs from local clone's branch: ${branch}"
+ ret_val=42
fi
- return 42
+ return $ret_val
;;
esac
}
@@ -469,7 +488,7 @@ verify_continue_install(){
prompt_installation_setting(){
- # usage: prompt_installation_setting brand.git_url
+ # usage: prompt_installation_setting brand.docs_url
#
# Prompts the value of the (YAML) setting in the SearXNG instance.
@@ -496,6 +515,23 @@ EOF
esac
}
+get_installed_version_variables() {
+
+ # usage: eval "$(get_installed_version_variables)"
+ #
+ # Set variables VERSION_STRING, VERSION_TAG, GIT_URL, GIT_BRANCH
+
+ local _state
+ _state="$(install_searx_get_state)"
+ case $_state in
+ python-installed|installer-modified)
+ sudo -H -u "${SERVICE_USER}" "${SEARX_PYENV}/bin/python" -m searx.version;;
+ *)
+ return 42
+ ;;
+ esac
+}
+
init_SEARX_SRC(){
rst_title "Update instance: ${SEARX_SRC}/" section
@@ -512,20 +548,21 @@ init_SEARX_SRC(){
fi
echo
- echo "Manipulating files like settings.yml can break existing installation!"
echo "Update instance with file(s) from: ${REPO_ROOT}"
echo
for i in "${SEARX_SRC_INIT_FILES[@]}"; do
echo "- $i"
done
+ echo
+ echo "Be careful when modifying an existing installation."
if ! ask_yn "Do you really want to update these files in the instance?" Yn; then
return 42
fi
for fname in "${SEARX_SRC_INIT_FILES[@]}"; do
while true; do
choose_one _reply "choose next step with file ${fname}" \
- "leave file unchanged" \
"replace file" \
+ "leave file unchanged" \
"diff files" \
"interactive shell"