source: projects/proc-rpmnew/trunk/proc-rpmnew.in @ 4573

Revision 4573, 1.7 KB checked in by yasumichi, 13 years ago (diff)

sdiff 実行部分を関数化し、合わせて出力幅をしていするようにした。

Line 
1#!/bin/bash
2
3# Directory
4prefix=@prefix@
5datarootdir=@datarootdir@
6datadir=@datadir@
7
8# Enable NLS
9export TEXTDOMAIN=proc-rpmnew
10export TEXTDOMAINDIR=@localedir@
11
12. gettext.sh
13
14# Output menu
15output_menu()
16{
17        echo "`eval_gettext "S) Show difference"`"
18        echo "`eval_gettext "E) Edit on diff mode of vim"`"
19        echo "`eval_gettext "I) merge Intaractively by sdiff"`"
20        echo "`eval_gettext "R) Replace current file by saved file"`"
21        echo "`eval_gettext "P) Protect current file and remove saved file"`"
22        echo "`eval_gettext "Q) Quit"`"
23        echo "`eval_gettext "N) Next file"`"
24        echo -n "`eval_gettext "What do you do? > "`"
25}
26
27# execute diff
28exec_diff()
29{
30        COLUMNS=$(tput cols)
31        HALFCOL=$(expr $COLUMNS / 2 - 2)
32
33        printf "%-${HALFCOL}s%-${HALFCOL}s\n" $dir/$cur $dir/$sav
34        echo
35        diff --side-by-side -W ${COLUMNS} $dir/$cur $dir/$sav   # --suppress-common-lines
36}
37
38# execute sdiff
39exec_sdiff()
40{
41        sdiff -o $dir/$cur.new -w $(tput cols) $dir/$cur $dir/$sav
42        mv $dir/$cur.new $dir/$cur
43}
44
45# main loop
46for file in `find /etc 2>/dev/null | @EGREP@ "rpm(new|save)$"`
47do
48        dir=`dirname $file`
49        sav=`basename $file`
50        cur=`basename $file .rpmnew`
51        if [ $cur = $sav ]
52        then
53                cur=`basename $file .rpmsave`
54        fi
55        if [ -e $cur ]
56        then
57                continue
58        fi
59
60        ok=0
61        while [ $ok -eq 0 ]
62        do
63                echo "`eval_gettext "current configuration: \\\$dir/\\\$cur"`"
64                echo "`eval_gettext "saved configuration  : \\\$file"`"
65                output_menu
66
67                read command
68                echo
69                case "$command" in
70                        s|S)    exec_diff ;;
71
72                        e|E)    vim +r$dir/$cur -d $dir/$cur.new $dir/$sav
73                                mv $dir/$cur.new $dir/$cur ;;
74
75                        i|I)    exec_sdiff ;;
76
77                        r|R)    mv $dir/$sav $dir/$cur
78                                ok=1;;
79
80                        p|P)    rm $dir/$sav
81                                ok=1;;
82
83                        q|Q)    exit ;;
84
85                        n|N)    ok=1;;
86
87                        *)      echo "`eval_gettext "You inputed wrong character."`"
88                                echo;;
89                esac
90        done
91done
Note: See TracBrowser for help on using the repository browser.