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