mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-22 01:13:00 +02:00
utils: fix linter warnings, simplify, and improve log messages on update
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
committed by
Tobias Waldekranz
parent
65bce0378e
commit
039cb5db74
@@ -1,5 +1,6 @@
|
||||
# -*- sh -*-
|
||||
# REMEMBER TO UPDATE infix-interfaces ALSO IN containers.inc
|
||||
#FORCE_UPDATE="infix-interfaces"
|
||||
MODULES=(
|
||||
"ietf-system@2014-08-06.yang -e authentication -e local-users -e ntp -e ntp-udp-port -e timezone-name"
|
||||
"iana-timezones@2013-11-19.yang"
|
||||
|
||||
@@ -7,16 +7,17 @@
|
||||
# their respective enabled features in a MODULES array.
|
||||
# Example:
|
||||
# MODULES=("module@revision -e feature1 -e feature2")
|
||||
|
||||
# shellcheck disable=SC1090
|
||||
source "$1"
|
||||
|
||||
# optional env variable override
|
||||
if [ -n "$SYSREPOCTL_EXECUTABLE" ]; then
|
||||
SYSREPOCTL="$SYSREPOCTL_EXECUTABLE"
|
||||
# avoid problems with sudo PATH
|
||||
elif [ `id -u` -eq 0 ] && [ -n "$USER" ] && [ `command -v su` ]; then
|
||||
SYSREPOCTL=`command sysrepoctl -l $USER`
|
||||
elif [ "$(id -u)" -eq 0 ] && [ -n "$USER" ] && [ -n "$(command -v su)" ]; then
|
||||
SYSREPOCTL=$(command sysrepoctl -l "$USER")
|
||||
else
|
||||
SYSREPOCTL=`command sysrepoctl`
|
||||
SYSREPOCTL=$(command sysrepoctl)
|
||||
fi
|
||||
|
||||
MODDIR=${SEARCH_PATH}
|
||||
@@ -26,22 +27,54 @@ PERMS="660"
|
||||
|
||||
CMD_INSTALL=
|
||||
|
||||
# functions
|
||||
INSTALL_MODULE_CMD() {
|
||||
|
||||
install()
|
||||
{
|
||||
if [ -z "${CMD_INSTALL}" ]; then
|
||||
CMD_INSTALL="'$SYSREPOCTL' -s $MODDIR -v2"
|
||||
fi
|
||||
CMD_INSTALL="$CMD_INSTALL -i $MODDIR/$1 -p '$PERMS'"
|
||||
if [ ! -z "${OWNER}" ]; then
|
||||
if [ -n "${OWNER}" ]; then
|
||||
CMD_INSTALL="$CMD_INSTALL -o '$OWNER'"
|
||||
fi
|
||||
if [ ! -z "${GROUP}" ]; then
|
||||
if [ -n "${GROUP}" ]; then
|
||||
CMD_INSTALL="$CMD_INSTALL -g '$GROUP'"
|
||||
fi
|
||||
}
|
||||
|
||||
UPDATE_MODULE() {
|
||||
CMD="'$SYSREPOCTL' -U $MODDIR/$1 -s '$MODDIR' -v2"
|
||||
|
||||
update()
|
||||
{
|
||||
local module="$1"
|
||||
local cmd="'$SYSREPOCTL' -U $MODDIR/$module -s '$MODDIR' -v2"
|
||||
|
||||
local output rc
|
||||
output=$(eval "$cmd" 2>&1)
|
||||
rc=$?
|
||||
|
||||
if [ $rc -ne 0 ]; then
|
||||
if echo "$output" | grep -q "Module .* already installed"; then
|
||||
echo "*** Warning: Module $module is already installed. Skipping update."
|
||||
return 0
|
||||
fi
|
||||
echo "*** Error: failed updating module $module: $output" >&2
|
||||
return $rc
|
||||
fi
|
||||
|
||||
echo "*** Successfully updated module $module."
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
chperm()
|
||||
{
|
||||
CMD="'$SYSREPOCTL' -c $1 -p '$PERMS' -v2"
|
||||
if [ -n "${OWNER}" ]; then
|
||||
CMD="$CMD -o '$OWNER'"
|
||||
fi
|
||||
if [ -n "${GROUP}" ]; then
|
||||
CMD="$CMD -g '$GROUP'"
|
||||
fi
|
||||
eval "$CMD"
|
||||
local rc=$?
|
||||
if [ $rc -ne 0 ]; then
|
||||
@@ -49,79 +82,68 @@ UPDATE_MODULE() {
|
||||
fi
|
||||
}
|
||||
|
||||
CHANGE_PERMS() {
|
||||
CMD="'$SYSREPOCTL' -c $1 -p '$PERMS' -v2"
|
||||
if [ ! -z "${OWNER}" ]; then
|
||||
CMD="$CMD -o '$OWNER'"
|
||||
fi
|
||||
if [ ! -z "${GROUP}" ]; then
|
||||
CMD="$CMD -g '$GROUP'"
|
||||
fi
|
||||
eval $CMD
|
||||
|
||||
enable()
|
||||
{
|
||||
$SYSREPOCTL -c "$1" -e "$2" -v2
|
||||
local rc=$?
|
||||
if [ $rc -ne 0 ]; then
|
||||
exit $rc
|
||||
fi
|
||||
}
|
||||
|
||||
ENABLE_FEATURE() {
|
||||
"$SYSREPOCTL" -c $1 -e $2 -v2
|
||||
local rc=$?
|
||||
if [ $rc -ne 0 ]; then
|
||||
exit $rc
|
||||
fi
|
||||
}
|
||||
|
||||
# get current modules
|
||||
SCTL_MODULES=`$SYSREPOCTL -l`
|
||||
for i in "${MODULES[@]}"; do
|
||||
name=`echo "$i" | sed 's/\([^@]*\).*/\1/'`
|
||||
# Skip first 5 lines of header and last 3 lines of footer
|
||||
SCTL_MODULES=$($SYSREPOCTL -l |tail -n +5 |head -n -3)
|
||||
|
||||
SCTL_MODULE=`echo "$SCTL_MODULES" | grep "^$name \+|[^|]*| I"`
|
||||
for module in "${MODULES[@]}"; do
|
||||
name=$(echo "$module" | awk -F'[@.]' '{print $1}')
|
||||
date=$(echo "$module" | awk -F'[@.]' '{print $2}')
|
||||
|
||||
SCTL_MODULE=$(echo "$SCTL_MODULES" | grep "^$name \+|[^|]*| I")
|
||||
if [ -z "$SCTL_MODULE" ]; then
|
||||
# prepare command to install module with all its features
|
||||
echo "*** Installing YANG model $name ..."
|
||||
INSTALL_MODULE_CMD "$i"
|
||||
install "$module"
|
||||
continue
|
||||
fi
|
||||
|
||||
sctl_revision=`echo "$SCTL_MODULE" | sed 's/[^|]*| \([^ ]*\).*/\1/'`
|
||||
revision=`echo "$i" | sed 's/[^@]*@\([^\.]*\).*/\1/'`
|
||||
if [ "$sctl_revision" \< "$revision" ]; then
|
||||
rev=$(echo "$SCTL_MODULE" | awk '{print $3}')
|
||||
if [ "$rev" != "$date" ] || echo "$FORCE_UPDATE" | grep -qw "$name"; then
|
||||
# update module without any features
|
||||
file=`echo "$i" | cut -d' ' -f 1`
|
||||
file=$(echo "$module" | cut -d' ' -f 1)
|
||||
echo "*** Updating YANG model $name ($file) ..."
|
||||
UPDATE_MODULE "$file"
|
||||
update "$file"
|
||||
fi
|
||||
|
||||
sctl_owner=`echo "$SCTL_MODULE" | sed 's/\([^|]*|\)\{3\} \([^:]*\).*/\2/'`
|
||||
sctl_group=`echo "$SCTL_MODULE" | sed 's/\([^|]*|\)\{3\}[^:]*:\([^ ]*\).*/\2/'`
|
||||
sctl_perms=`echo "$SCTL_MODULE" | sed 's/\([^|]*|\)\{4\} \([^ ]*\).*/\2/'`
|
||||
#sctl_owner=`echo "$SCTL_MODULE" | sed 's/\([^|]*|\)\{3\} \([^:]*\).*/\2/'`
|
||||
#sctl_group=`echo "$SCTL_MODULE" | sed 's/\([^|]*|\)\{3\}[^:]*:\([^ ]*\).*/\2/'`
|
||||
sctl_perms=$(echo "$SCTL_MODULE" | sed 's/\([^|]*|\)\{4\} \([^ ]*\).*/\2/')
|
||||
if [ "$sctl_perms" != "$PERMS" ]; then
|
||||
# change permissions/owner
|
||||
echo "*** Changing YANG model $name permissions ..."
|
||||
CHANGE_PERMS "$name"
|
||||
chperm "$name"
|
||||
fi
|
||||
|
||||
# parse sysrepoctl features and add extra space at the end for easier matching
|
||||
sctl_features="`echo "$SCTL_MODULE" | sed 's/\([^|]*|\)\{6\}\(.*\)/\2/'` "
|
||||
# parse features we want to enable
|
||||
features=`echo "$i" | sed 's/[^ ]* \(.*\)/\1/'`
|
||||
features=`echo "$module" | sed 's/[^ ]* \(.*\)/\1/'`
|
||||
while [ "${features:0:3}" = "-e " ]; do
|
||||
# skip "-e "
|
||||
features=${features:3}
|
||||
# parse feature
|
||||
feature=`echo "$features" | sed 's/\([^[:space:]]*\).*/\1/'`
|
||||
feature=$(echo "$features" | sed 's/\([^[:space:]]*\).*/\1/')
|
||||
|
||||
# enable feature if not already
|
||||
sctl_feature=`echo "$sctl_features" | grep " ${feature} "`
|
||||
sctl_feature=$(echo "$sctl_features" | grep " ${feature} ")
|
||||
if [ -z "$sctl_feature" ]; then
|
||||
# enable feature
|
||||
ENABLE_FEATURE $name $feature
|
||||
enable "$name" "$feature"
|
||||
fi
|
||||
|
||||
# next iteration, skip this feature
|
||||
features=`echo "$features" | sed 's/[^[:space:]]* \(.*\)/\1/'`
|
||||
features=$(echo "$features" | sed 's/[^[:space:]]* \(.*\)/\1/')
|
||||
done
|
||||
done
|
||||
|
||||
|
||||
Reference in New Issue
Block a user