]> git.pld-linux.org Git - packages/rpm.git/blob - banner.sh
- initial
[packages/rpm.git] / banner.sh
1 #!/bin/sh
2 #
3 # bug reports send to pzurowski@pld-linux.org or pld-devel-* lists
4 #
5 # 2004, GPL 2+
6 #
7 # >> PLACE STANDARD GPL DISCLAIMER   H E R E .  <<
8 #
9 CONFIG=/etc/sysconfig/banner
10
11 ####################################################### CONFIG ########
12
13 # default paramaters
14 ##########################
15
16 BANNERDIR="/var/lib/banner/"
17 # egrep regexp
18 EXCLUDEFILES="(rpmnew$|rpmsave$|~$)"
19
20
21 # config paramaeters
22 ##########################
23
24 if [ -r $CONFIG ]; then
25         . $CONFIG
26 fi
27
28
29 # override parameters
30 ##########################
31
32 ALL_BANNERS=0
33 BANNERS=""
34 NOBANNERS=""
35 BANNER_LIST=""
36 CHOOSE_NEWER="no"
37 CHOOSE_OLDER="no"
38 EXCLUDE_FLAG=0
39 NEED_BANNER_LIST=0
40 NEED_MTIME_CHECK=0
41 NEW_APPEND=0
42 NEW_BANNER=""
43 NEW_SHOW=0
44
45 #################################################### FUNCTIONS ########
46
47 Usage()
48 {
49         cat << EOF
50 Usage:  $(basename $0) [opitions] [banners]
51 EOF
52 }
53 Help()
54 {
55         Usage
56         cat << EOF
57 -a
58 --all       - all banners
59 --delete    - delete wanted banners
60 -e
61 --exclude   - exclude following banners (usefull with -a)
62 -h
63 --help      - shows this help
64 -i
65 --include   - cancels effect of -e (EXCLUDED banners will remain excluded)
66 -m
67 --make      - makes a brand-new banner named as following para [1] (from stdin)
68 -M          - same as above, but append if file exists
69 -n
70 --names     - shows names of the banners
71 --newer     - all choosen banners should be newer than following para in seconds
72 --older     - all choosen banners should be older than following para in seconds
73 -s
74 --show      - shows wanted banners
75 -u
76 --usage     - shows short help
77
78 [1] - if there will be no slash ('/') in name then config dir will be used,
79       else -- specified.
80 EOF
81 }
82 Unknown_para()
83 {
84         cat << EOF
85 Unknown parameter $1
86 EOF
87         Help
88 }
89 check_banner_name()
90 {
91         echo "$1"|sed 's,.*/,,'
92 }
93 check_banners_mtime()
94 {
95         BANNERS="$1"
96         OLDER="$2"
97         NEWER="$3"
98         DATE=$(date +%s)
99         for BANNER in $BANNERS;do
100                 STAT=$(stat -c %Y "$BANNERDIR/$BANNER")
101                 if [ $OLDER != "no" -a $(( $DATE - $STAT )) -lt $OLDER ]; then
102                         BANNER=""
103                 fi
104                 if [ $NEWER != "no" -a $(( $DATE - $STAT )) -gt $NEWER ]; then
105                         BANNER=""
106                 fi
107                 echo $BANNER
108         done
109 }
110 delete_banners()
111 {
112         BANNERS="$1"
113         rm -rf $(get_banner_location_list "$BANNER")
114 }
115 get_all_banner_list()
116 {
117         ls "$BANNERDIR" | grep -E -v "$EXCLUDEFILES"
118 }
119 get_banner_list()
120 {
121         BANNERS="$1"
122         NOBANNERS="$2"
123         for BANNER in $BANNERS; do
124                 if [ -r "$BANNERDIR/$BANNER" ];then
125                         echo $NOBANNERS | grep -q $BANNER || echo $BANNER
126                 fi
127         done
128 }
129 get_banner_location_list()
130 {
131         BANNERS="$1"
132         for BANNER in $BANNERS; do
133                 echo "$BANNERDIR/$BANNER"
134         done
135 }
136 make_banner()
137 {
138         BANNER="$1"
139         SHOW="$2"
140         mkdir -p $(echo $BANNER|sed 's,/[^/]*$,,')
141         if [ $NEW_APPEND -eq 0 ]; then
142                 cat > $BANNER
143         else
144                 cat >> $BANNER
145         fi
146         if [ $SHOW -eq 1 ];then
147                 cat $BANNER
148         fi
149 }
150 show_banner()
151 {
152         cat $BANNERDIR/$1
153 }
154 show_banners()
155 {
156         for BANNER in $*; do
157                 show_banner $BANNER
158         done
159 }
160 ######################################################## MAIN ########
161 while [ ! -z $1 ]; do
162         case $1 in
163                 -a|--all)
164                         ALL_BANNERS=1
165                         ;;
166                 --delete)
167                         NEED_BANNER_LIST=1
168                         ACTION="delete"
169                         ;;
170                 -e|--exclude)
171                         EXCLUDE_FLAG=1
172                         ;;
173                 -h|--help)
174                         Help
175                         exit 0
176                         ;;
177                 -i|--include)
178                         EXCLUDE_FLAG=0
179                         ;;
180                 -m|--make|-M)
181                         NEED_BANNER_LIST=0
182                         if [ "$(check_banner_name $2)" == "$2" ]; then
183                                 NEW_BANNER=$BANNERDIR/$(check_banner_name "$2")
184                         else
185                                 NEW_BANNER="$2"
186                         fi
187                         ACTION="make"
188                         if [ "$1" == "-M" ];then
189                                 NEW_APPEND=1
190                         else
191                                 NEW_APPEND=0
192                         fi
193                         if [ -z "$NEW_BANNER" ];then
194                                 Help
195                                 exit 2
196                         fi
197                         shift
198                         ;;
199                 -n|--names)
200                         NEED_BANNER_LIST=1
201                         ACTION="names"
202                         ;;
203                 --newer)
204                         NEED_MTIME_CHECK=1
205                         CHOOSE_NEWER="$2"
206                         if [ -z "$CHOOSE_NEWER" ];then
207                                 Help
208                                 exit 2
209                         fi
210                         shift
211                         ;;
212                 --older)
213                         NEED_MTIME_CHECK=1
214                         CHOOSE_OLDER="$2"
215                         if [ -z "$CHOOSE_OLDER" ];then
216                                 Help
217                                 exit 2
218                         fi
219                         shift
220                         ;;
221                 -s|--show)
222                         NEED_BANNER_LIST=1
223                         NEW_SHOW=1
224                         ACTION="show"
225                         ;;
226                 -u|--usage)
227                         Usage
228                         exit 0
229                         ;;
230                 -*)
231                         Unknown_para "$1"
232                         exit 1
233                         ;;
234                 *)
235                         if [ $EXCLUDE_FLAG -eq 0 ];then
236                                 BANNERS="$BANNERS $(check_banner_name $1)"
237                         else
238                                 NOBANNERS="$NOBANNERS $(check_banner_name $1)"
239                         fi
240                         ;;
241         esac
242         shift
243 done
244
245 if [ $ALL_BANNERS -ne 0 ]; then
246         BANNERS=`get_all_banner_list`
247 fi
248 if [ $NEED_BANNER_LIST -ne 0 ];then
249         BANNER_LIST=`get_banner_list "$BANNERS" "$NOBANNERS"`
250 fi
251 if [ $NEED_MTIME_CHECK -ne 0 ];then
252         BANNER_LIST=`check_banners_mtime "$BANNER_LIST" "$CHOOSE_OLDER" "$CHOOSE_NEWER"`
253 fi
254
255 case $ACTION in
256         "delete")
257                 delete_banners $BANNER_LIST;
258                 ;;
259         "make")
260                 make_banner $NEW_BANNER $NEW_SHOW;
261                 ;;
262         "names")
263                 echo $BANNER_LIST;
264                 ;;
265         "show")
266                 show_banners $BANNER_LIST;
267                 ;;
268 esac
269
270
271
This page took 0.051865 seconds and 4 git commands to generate.