summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
Diffstat (limited to 'utils')
-rwxr-xr-xutils/lib.sh17
-rwxr-xr-xutils/lib_static.sh124
-rwxr-xr-xutils/lxc.sh4
3 files changed, 140 insertions, 5 deletions
diff --git a/utils/lib.sh b/utils/lib.sh
index 8867bfe8e..014d4a740 100755
--- a/utils/lib.sh
+++ b/utils/lib.sh
@@ -78,9 +78,18 @@ required_commands() {
# shellcheck disable=SC2034
set_terminal_colors() {
- _colors=8
+ # https://en.wikipedia.org/wiki/ANSI_escape_code
+
+ # CSI (Control Sequence Introducer) sequences
+ _show_cursor='\e[?25h'
+ _hide_cursor='\e[?25l'
+
+ # SGR (Select Graphic Rendition) parameters
_creset='\e[0m' # reset all attributes
+ # original specification only had 8 colors
+ _colors=8
+
_Black='\e[0;30m'
_White='\e[1;37m'
_Red='\e[0;31m'
@@ -270,6 +279,8 @@ prefix_stdout () {
(while IFS= read line; do
echo -e "${prefix}$line"
done)
+ # some piped commands hide the cursor, show cursory when the stream ends
+ echo -en "$_show_cursor"
}
append_line() {
@@ -1546,7 +1557,7 @@ pkg_install() {
;;
arch)
# shellcheck disable=SC2068
- pacman -Sy --noconfirm $@
+ pacman --noprogressbar -Sy --noconfirm $@
;;
fedora)
# shellcheck disable=SC2068
@@ -1578,7 +1589,7 @@ pkg_remove() {
;;
arch)
# shellcheck disable=SC2068
- pacman -R --noconfirm $@
+ pacman --noprogressbar -R --noconfirm $@
;;
fedora)
# shellcheck disable=SC2068
diff --git a/utils/lib_static.sh b/utils/lib_static.sh
new file mode 100755
index 000000000..0d4ba9bad
--- /dev/null
+++ b/utils/lib_static.sh
@@ -0,0 +1,124 @@
+#!/usr/bin/env bash
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+
+STATIC_BUILD_COMMIT="[build] /static"
+STATIC_BUILT_PATHS=(
+ searx/static/themes/oscar/css
+ searx/static/themes/oscar/js
+ searx/static/themes/oscar/src/generated/pygments-logicodev.less
+ searx/static/themes/oscar/src/generated/pygments-pointhi.less
+ searx/static/themes/simple/css
+ searx/static/themes/simple/js
+ searx/static/themes/simple/src/generated/pygments.less
+)
+
+static_help(){
+ cat <<EOF
+static.build.: ${STATIC_BUILD_COMMIT}
+ commit : build & commit /static folder
+ drop : drop last commit if it was previously done by static.build.commit
+ restore : git restore of the /static folder (after themes.all)
+EOF
+}
+
+is.static.build.commit() {
+
+ local commit_sha="$1"
+ local commit_message
+ local commit_files
+
+ # check commit message
+ commit_message=$(git show -s --format=%s "${commit_sha}")
+ if [ "${commit_message}" != "${STATIC_BUILD_COMMIT}" ]; then
+ err_msg "expecting commit message: '${STATIC_BUILD_COMMIT}'"
+ err_msg "commit message of ${commit_sha} is: '${commit_message}'"
+ return 1
+ fi
+
+ # check all files of the commit belongs to $STATIC_BUILT_PATHS
+ commit_files=$(git diff-tree --no-commit-id --name-only -r "${commit_sha}")
+ for i in ${STATIC_BUILT_PATHS[*]}; do
+ # remove files of ${STATIC_BUILT_PATHS}
+ commit_files=$(echo "${commit_files}" | grep -v "^${i}")
+ done
+
+ if [ -n "${commit_files}" ]; then
+ err_msg "commit ${commit_sha} contains files not a part of ${STATIC_BUILD_COMMIT}"
+ echo "${commit_files}" | prefix_stdout " "
+ return 2
+ fi
+ return 0
+}
+
+static.build.drop() {
+ # drop last commit if it was made by the static.build.commit command
+
+ local last_commit_id
+ local branch
+
+ build_msg STATIC "drop last commit if it was previously done by static.build.commit"
+
+ # get only last (option -n1) local commit not in remotes
+ branch="$(git branch --show-current)"
+ last_commit_id="$(git log -n1 "${branch}" --pretty=format:'%h'\
+ --not --exclude="${branch}" --branches --remotes)"
+
+ if [ -z "${last_commit_id}" ]; then
+ err_msg "there are no local commits"
+ return 1
+ fi
+
+ if ! is.static.build.commit "${last_commit_id}"; then
+ return $?
+ fi
+
+ build_msg STATIC "drop last commit ${last_commit_id}"
+ git reset --hard HEAD~1
+}
+
+static.build.commit() {
+ # call the "static.build.drop" command, then "themes.all" then commit the
+ # built files ($BUILT_PATHS).
+
+ build_msg STATIC "build & commit /static files"
+
+ # check for not commited files
+ if [ -n "$(git diff --name-only)" ]; then
+ err_msg "some files are not commited:"
+ git diff --name-only | prefix_stdout " "
+ return 1
+ fi
+
+ # check for staged files
+ if [ -n "$(git diff --name-only --cached)" ]; then
+ err_msg "some files are staged:"
+ git diff --name-only --cached | prefix_stdout " "
+ return 1
+ fi
+
+ # drop existing commit from previos build
+ static.build.drop &>/dev/null
+
+ ( set -e
+ # build the themes
+ themes.all
+
+ # add build files
+ for built_path in "${STATIC_BUILT_PATHS[@]}"; do
+ git add -v "${built_path}"
+ done
+
+ # check for modified files that are not staged
+ if [ -n "$(git diff --name-only)" ]; then
+ die 42 "themes.all has created files that are not in STATIC_BUILT_PATHS"
+ fi
+ git commit -m "${STATIC_BUILD_COMMIT}"
+ )
+}
+
+static.build.restore() {
+ build_msg STATIC "git-restore of the built files (/static)"
+ git restore --staged "${STATIC_BUILT_PATHS[@]}"
+ git restore --worktree "${STATIC_BUILT_PATHS[@]}"
+}
diff --git a/utils/lxc.sh b/utils/lxc.sh
index 90c4949a6..f94e9841a 100755
--- a/utils/lxc.sh
+++ b/utils/lxc.sh
@@ -45,8 +45,8 @@ ubu2010_boilerplate="$ubu1904_boilerplate"
# shellcheck disable=SC2034
archlinux_boilerplate="
-pacman -Syu --noconfirm
-pacman -S --noconfirm inetutils git curl wget sudo
+pacman --noprogressbar -Syu --noconfirm
+pacman --noprogressbar -S --noconfirm inetutils git curl wget sudo
echo 'Set disable_coredump false' >> /etc/sudo.conf
"