[mod] utils/manage_static.sh: add script to shellcheck

- add script to shellcheck,
- fix error messages from shellcheck and
- moved global variables to local variables (lower case)

No functional change!

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
This commit is contained in:
Markus Heiser 2021-06-24 15:15:34 +02:00
parent 0606cde105
commit 2cb1f35086
2 changed files with 40 additions and 31 deletions

View file

@ -59,7 +59,8 @@ test.shell:
dockerfiles/docker-entrypoint.sh
$(Q)shellcheck -x -s bash \
utils/brand.env \
./manage \
$(MTOOLS) \
$(MSTATIC) \
utils/lib.sh \
utils/filtron.sh \
utils/searx.sh \
@ -67,7 +68,7 @@ test.shell:
utils/lxc.sh \
utils/lxc-searx.env \
.config.sh
$(Q)./manage build_msg TEST "$@ OK"
$(Q)$(MTOOLS) build_msg TEST "$@ OK"
# wrap ./manage script

View file

@ -1,8 +1,7 @@
#!/usr/bin/env bash
# -*- coding: utf-8; mode: sh indent-tabs-mode: nil -*-
# SPDX-License-Identifier: AGPL-3.0-or-later
BUILD_COMMIT_MESSAGE="Static build"
BUILD_COMMIT_MESSAGE="[build] /static"
BUILT_PATHS=(
searx/static/themes/oscar/css
@ -14,70 +13,76 @@ BUILT_PATHS=(
searx/static/themes/simple/src/generated/pygments.less
)
CURRENT_BRANCH="$(git branch --show-current)"
STAGED_FILES=$(git diff --name-only --cached)
git_log_current_branch() {
git log "heads/${CURRENT_BRANCH}" --not --exclude="${CURRENT_BRANCH}" --branches --remotes --pretty=format:"%h"
local branch
branch="$(git branch --show-current)"
git log "${branch}" --pretty=format:'%h' \
--not --exclude="${branch}" --branches --remotes
}
is.build.commit() {
COMMIT_SHA=$1
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}" != "${BUILD_COMMIT_MESSAGE}" ]; then
echo "Commit message of ${COMMIT_SHA} is '${COMMIT_MESSAGE}'"
commit_message=$(git show -s --format=%s "${commit_sha}")
if [ "${commit_message}" != "${BUILD_COMMIT_MESSAGE}" ]; then
echo "Commit message of ${commit_sha} is '${commit_message}'"
return 1
fi
# check all files of the commit belongs to $BUILT_PATHS
COMMIT_FILES=$(git diff-tree --no-commit-id --name-only -r "${COMMIT_SHA}")
commit_files=$(git diff-tree --no-commit-id --name-only -r "${commit_sha}")
for i in ${BUILT_PATHS[*]}; do
# remove files of ${BUILT_PATHS}
COMMIT_FILES=$(echo "${COMMIT_FILES}" | grep -v "^${i}")
commit_files=$(echo "${commit_files}" | grep -v "^${i}")
done
if [ -n "${COMMIT_FILES}" ]; then
echo "Commit $1 contains files that were not build: ${COMMIT_FILES}"
if [ -n "${commit_files}" ]; then
echo "Commit $1 contains files that were not build: ${commit_files}"
return 2
fi
return 0
}
static.build.commit.drop() {
LAST_COMMIT_ID=$(git_log_current_branch | head -1)
local last_commit_id
last_commit_id=$(git_log_current_branch | head -1)
if [ -z "${LAST_COMMIT_ID}" ]; then
if [ -z "${last_commit_id}" ]; then
echo "Empty branch"
return 1
fi
is.build.commit "${LAST_COMMIT_ID}"
if [ $? -ne 0 ]; then
if ! is.build.commit "${last_commit_id}"; then
return $?
fi
echo "Drop last commit ${LAST_COMMIT_ID}"
echo "Drop last commit ${last_commit_id}"
git reset --hard HEAD~1
}
static.build.commit() {
local staged_files
# check for not commited files
NOT_COMMITED_FILES="$(git diff --name-only)"
if [ -n "${NOT_COMMITED_FILES}" ]; then
if [ -n "$(git diff --name-only)" ]; then
echo "Some files are not commited:"
echo "${NOT_COMMITED_FILES}"
return 1
fi
staged_files=$(git diff --name-only --cached)
# check for staged files
if [ -n "${STAGED_FILES}" ]; then
if [ -n "${staged_files}" ]; then
echo "Some files are staged:"
echo "${STAGED_FILES}"
echo "${staged_files}"
return 1
fi
# drop existing commit
static.commit.drop
if [ $? -ne 0 ]; then
if static.commit.drop; then
return $?
fi
@ -87,7 +92,7 @@ static.build.commit() {
make themes.all
# add build files
for built_path in ${BUILT_PATHS[@]}; do
for built_path in "${BUILT_PATHS[@]}"; do
git add -v "${built_path}"
done
@ -96,16 +101,18 @@ static.build.commit() {
echo "make themes.all has created files that are not in BUILT_PATHS"
return 2
fi
#
git commit -m "Static build"
git commit -m "${BUILD_COMMIT_MESSAGE}"
)
}
static.git.restore.staged() {
local STAGED_FILES
STAGED_FILES=$(git diff --name-only --cached)
for i in ${BUILT_PATHS[*]}; do
STAGED_FILES_FOR_I=$(echo "${STAGED_FILES}" | grep "^${i}")
if [ -n "${STAGED_FILES_FOR_I}" ]; then
# shellcheck disable=SC2086
git restore --staged ${STAGED_FILES_FOR_I}
fi
done
@ -118,6 +125,7 @@ static.git.restore() {
for i in ${BUILT_PATHS[*]}; do
NOT_COMMITED_FILES_FOR_I=$(echo "${NOT_COMMITED_FILES}" | grep "^${i}")
if [ -n "${NOT_COMMITED_FILES_FOR_I}" ]; then
# shellcheck disable=SC2086
git restore ${NOT_COMMITED_FILES_FOR_I}
fi
done