etc-update: add option to save example config
authorAnthony Basile <blueness@gentoo.org>
Sun, 12 Dec 2010 23:30:45 +0000 (18:30 -0500)
committerZac Medico <zmedico@gentoo.org>
Mon, 13 Dec 2010 07:12:29 +0000 (23:12 -0800)
This will fix bug #348561.

bin/etc-update

index e282a307c5ffa2d9c75bf12075283916848b151a..d4ed6e68963ce01851f268c89197fcb36f0a41dd 100755 (executable)
@@ -339,6 +339,7 @@ do_cfg() {
 2) Delete update, keeping original as is
 3) Interactively merge original with update
 4) Show differences again
+5) Save update as example config
 Please select from the menu above (-1 to ignore this update): "
                        my_input=$(read_int)
                fi
@@ -361,6 +362,8 @@ Please select from the menu above (-1 to ignore this update): "
                           ;;
                        4) continue
                           ;;
+                       5) do_distconf "${file}" "${ofile}"
+                          ;;
                        *) continue
                           ;;
                esac
@@ -444,6 +447,36 @@ Please select from the menu above (-1 to exit, losing this merge): "
        return 255
 }
 
+do_distconf() {
+       # search for any previously saved distribution config
+       # files and number the current one accordingly
+
+       local file="${1}"
+       local ofile="${2}"
+       local -i count
+       local -i size
+       local -i fill
+       local -i f
+       local suffix
+       local efile
+
+       for count in $(seq 0 9999); do
+               size=${#count}
+               let fill=$((4-$size))
+               suffix=".dist_"
+               for f in $(seq 1 $fill); do
+                       suffix+="0"
+               done
+               suffix+="${count}"
+               efile="${ofile}${suffix}"
+               if [[ ! -f ${efile} ]]; then
+                       echo ${efile}
+                       mv ${mv_opts} ${file} ${efile}
+                       break
+               fi
+       done
+}
+
 die() {
        trap SIGTERM
        trap SIGINT