diff options
author | piterpunk <piterpunk@slackware.com> | 2021-06-04 17:11:13 -0300 |
---|---|---|
committer | Robby Workman <rworkman@slackware.com> | 2021-06-04 22:24:28 -0500 |
commit | ab871495224069440a9645899b500f279195250f (patch) | |
tree | 3d1f97d2be4de633b2b402e50ddab9891cdf276c /files | |
parent | 3c4c175de873a3ac5599da454bb693d2d5719811 (diff) | |
download | slackpkg-ab871495224069440a9645899b500f279195250f.tar.xz |
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
Diffstat (limited to 'files')
-rw-r--r-- | files/post-functions.conf-sample | 14 | ||||
-rw-r--r-- | files/post-functions.sh | 28 |
2 files changed, 39 insertions, 3 deletions
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 |