Added the new-config actions for specific files

- Added code to parse a list with the .new files and the default
  action to do.
- Added post-functions.conf file to hold the aforementioned list
  and possible future configurations.
- Updated the SlackBuild to install the post-functions.conf file
This commit is contained in:
piterpunk 2021-06-04 17:11:13 -03:00 committed by Robby Workman
parent 3c4c175de8
commit ab87149522
3 changed files with 41 additions and 4 deletions

View file

@ -0,0 +1,14 @@
# You can list here the .new files and the default action
# to do for each file. The list format is:
#
# /full/path/of/dot/new/file.new:action
#
# The action can be:
#
# O to Overwrite it with the new version
# R to Remove the new file
# K to Keep the current and the .new files
#
# E.g:
#/etc/slackpkg/mirrors.new:K
#/etc/ntp.conf.new:R

View file

@ -137,6 +137,12 @@ looknew() {
ONLY_NEW_DOTNEW="" ONLY_NEW_DOTNEW=""
fi fi
# if there is a /etc/slackpkg/post-functions.conf file, it will be
# used to take the pre-defined action to each file specified there.
if [ -f /etc/slackpkg/post-functions.conf ]; then
NEWCONFIG="/etc/slackpkg/post-functions.conf"
fi
printf "%s\n" "Searching for NEW configuration files..." printf "%s\n" "Searching for NEW configuration files..."
FILES=$( find \ FILES=$( find \
@ -179,8 +185,8 @@ What do you want (K/O/R/P)?
# No. of prompt etc. lines to print. # No. of prompt etc. lines to print.
TEXTLINES=$(( $( printf %b "$PROMPTTEXT" | wc -l ) + 3 )) TEXTLINES=$(( $( printf %b "$PROMPTTEXT" | wc -l ) + 3 ))
if [ $(( newcount + TEXTLINES )) -lt $ROWS ]; then if [ $(( newcount + TEXTLINES )) -lt $ROWS ] || [ "${BATCH}" = "on" ]; then
# All files will fit on screen. # All files will fit on screen or is a batch execution.
printf "%s\n" "$FILES" printf "%s\n" "$FILES"
else else
# Won't all fit, so scroll a screenfull at a time. # Won't all fit, so scroll a screenfull at a time.
@ -240,6 +246,9 @@ EOF
printf %b "$PROMPTTEXT" printf %b "$PROMPTTEXT"
answer answer
if [ "${BATCH}" = "on" ] && [ -n "${NEWCONFIG}" ]; then
ANSWER=P
fi
case $ANSWER in case $ANSWER in
K|k) K|k)
;; ;;
@ -256,11 +265,24 @@ EOF
P|p) P|p)
echo "Select what you want file-by-file" echo "Select what you want file-by-file"
for i in $FILES; do for i in $FILES; do
if [ -n "${NEWCONFIG}" ]; then
AUTOANSWER="$(sed -ne 's#^'$i':\([ORK]\)#\1#p' $NEWCONFIG 2>/dev/null)"
fi
GOEX=0 GOEX=0
while [ $GOEX -eq 0 ]; do while [ $GOEX -eq 0 ]; do
echo echo
showmenu $i "(K)eep" "(O)verwrite" "(R)emove" "(D)iff" "(M)erge" "(V)imdiff" showmenu $i "(K)eep" "(O)verwrite" "(R)emove" "(D)iff" "(M)erge" "(V)imdiff"
read ANSWER if [ -n "${AUTOANSWER}" ]; then
ANSWER=$AUTOANSWER
echo $ANSWER
else
if [ "${BATCH}" = "on" ]; then
ANSWER=K
echo $ANSWER
else
read ANSWER
fi
fi
case $ANSWER in case $ANSWER in
O|o) O|o)
overold $i overold $i

View file

@ -55,7 +55,8 @@ chown root:root $PKG/usr/sbin/slackpkg
# Prepare /etc directory: # Prepare /etc directory:
mkdir -pv $PKG/etc/slackpkg mkdir -pv $PKG/etc/slackpkg
cp -av blacklist.new slackpkg.conf.new $PKG/etc/slackpkg cp -av blacklist.new slackpkg.conf.new post-functions.conf-sample \
$PKG/etc/slackpkg
chmod 644 $PKG/etc/slackpkg/* chmod 644 $PKG/etc/slackpkg/*
chown root:root $PKG/etc/slackpkg/* chown root:root $PKG/etc/slackpkg/*
mkdir -pv $PKG/etc/slackpkg/templates mkdir -pv $PKG/etc/slackpkg/templates