From ab871495224069440a9645899b500f279195250f Mon Sep 17 00:00:00 2001 From: piterpunk Date: Fri, 4 Jun 2021 17:11:13 -0300 Subject: 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 --- files/post-functions.conf-sample | 14 ++++++++++++++ files/post-functions.sh | 28 +++++++++++++++++++++++++--- 2 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 files/post-functions.conf-sample (limited to 'files') diff --git a/files/post-functions.conf-sample b/files/post-functions.conf-sample new file mode 100644 index 0000000..1cbe04a --- /dev/null +++ b/files/post-functions.conf-sample @@ -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 diff --git a/files/post-functions.sh b/files/post-functions.sh index 9191766..e003643 100644 --- a/files/post-functions.sh +++ b/files/post-functions.sh @@ -137,6 +137,12 @@ looknew() { ONLY_NEW_DOTNEW="" 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..." FILES=$( find \ @@ -179,8 +185,8 @@ What do you want (K/O/R/P)? # No. of prompt etc. lines to print. TEXTLINES=$(( $( printf %b "$PROMPTTEXT" | wc -l ) + 3 )) - if [ $(( newcount + TEXTLINES )) -lt $ROWS ]; then - # All files will fit on screen. + if [ $(( newcount + TEXTLINES )) -lt $ROWS ] || [ "${BATCH}" = "on" ]; then + # All files will fit on screen or is a batch execution. printf "%s\n" "$FILES" else # Won't all fit, so scroll a screenfull at a time. @@ -240,6 +246,9 @@ EOF printf %b "$PROMPTTEXT" answer + if [ "${BATCH}" = "on" ] && [ -n "${NEWCONFIG}" ]; then + ANSWER=P + fi case $ANSWER in K|k) ;; @@ -256,11 +265,24 @@ EOF P|p) echo "Select what you want file-by-file" for i in $FILES; do + if [ -n "${NEWCONFIG}" ]; then + AUTOANSWER="$(sed -ne 's#^'$i':\([ORK]\)#\1#p' $NEWCONFIG 2>/dev/null)" + fi GOEX=0 while [ $GOEX -eq 0 ]; do echo 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 O|o) overold $i -- cgit v1.2.3