]> git.pld-linux.org Git - packages/rpm.git/blame - banner.sh
- obsolete
[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}
24af2d09 97
e2b2282b 98check_banners_mtime()
99{
100 BANNERS="$1"
101 OLDER="$2"
102 NEWER="$3"
103 DATE=$(date +%s)
104 for BANNER in $BANNERS;do
105 STAT=$(stat -c %Y "$BANNERDIR/$BANNER")
106 if [ $OLDER != "no" -a $(( $DATE - $STAT )) -lt $OLDER ]; then
107 BANNER=""
108 fi
109 if [ $NEWER != "no" -a $(( $DATE - $STAT )) -gt $NEWER ]; then
110 BANNER=""
111 fi
112 echo $BANNER
113 done
114}
115delete_banners()
116{
117 BANNERS="$1"
118 rm -rf $(get_banner_location_list "$BANNER")
119}
120get_all_banner_list()
121{
122 ls "$BANNERDIR" | grep -E -v "$EXCLUDEFILES"
123}
124get_banner_list()
125{
126 BANNERS="$1"
127 NOBANNERS="$2"
128 for BANNER in $BANNERS; do
129 if [ -r "$BANNERDIR/$BANNER" ];then
130 echo $NOBANNERS | grep -q $BANNER || echo $BANNER
131 fi
132 done
133}
134get_banner_location_list()
135{
136 BANNERS="$1"
137 for BANNER in $BANNERS; do
138 echo "$BANNERDIR/$BANNER"
139 done
140}
141make_banner()
142{
143 BANNER="$1"
144 SHOW="$2"
2502f05f
ER
145 if [ ! -d "${BANNER%/*}" ]; then
146 mkdir -p "${BANNER%/*}"
147 fi
2fbc8cb5 148 data=$(cat)
e2b2282b 149 if [ $NEW_APPEND -eq 0 ]; then
2fbc8cb5 150 echo "$data" > $BANNER
e2b2282b 151 else
2fbc8cb5 152 echo "$data" >> $BANNER
e2b2282b 153 fi
154 if [ $SHOW -eq 1 ];then
2fbc8cb5 155 echo "$data"
e2b2282b 156 fi
157}
158show_banner()
159{
bbb3b084 160 cat $BANNERDIR/$1 >&$STDOUT
e2b2282b 161}
162show_banners()
163{
164 for BANNER in $*; do
165 show_banner $BANNER
166 done
167}
168######################################################## MAIN ########
169while [ ! -z $1 ]; do
170 case $1 in
171 -a|--all)
172 ALL_BANNERS=1
173 ;;
174 --delete)
175 NEED_BANNER_LIST=1
176 ACTION="delete"
177 ;;
178 -e|--exclude)
179 EXCLUDE_FLAG=1
180 ;;
181 -h|--help)
182 Help
183 exit 0
184 ;;
185 -i|--include)
186 EXCLUDE_FLAG=0
187 ;;
188 -m|--make|-M)
189 NEED_BANNER_LIST=0
24af2d09
ER
190 if [[ $2 != */* ]]; then
191 NEW_BANNER="$BANNERDIR/${2##*/}"
e2b2282b 192 else
193 NEW_BANNER="$2"
194 fi
195 ACTION="make"
196 if [ "$1" == "-M" ];then
197 NEW_APPEND=1
198 else
199 NEW_APPEND=0
200 fi
201 if [ -z "$NEW_BANNER" ];then
202 Help
203 exit 2
204 fi
205 shift
206 ;;
207 -n|--names)
208 NEED_BANNER_LIST=1
209 ACTION="names"
210 ;;
211 --newer)
212 NEED_MTIME_CHECK=1
213 CHOOSE_NEWER="$2"
214 if [ -z "$CHOOSE_NEWER" ];then
215 Help
216 exit 2
217 fi
218 shift
219 ;;
220 --older)
221 NEED_MTIME_CHECK=1
222 CHOOSE_OLDER="$2"
223 if [ -z "$CHOOSE_OLDER" ];then
224 Help
225 exit 2
226 fi
227 shift
228 ;;
229 -s|--show)
230 NEED_BANNER_LIST=1
231 NEW_SHOW=1
232 ACTION="show"
233 ;;
bbb3b084 234 --stdout)
235 STDOUT="1"
236 ;;
237 --stderr)
238 STDOUT="2"
239 ;;
e2b2282b 240 -u|--usage)
241 Usage
242 exit 0
243 ;;
244 -*)
245 Unknown_para "$1"
246 exit 1
247 ;;
248 *)
249 if [ $EXCLUDE_FLAG -eq 0 ];then
24af2d09 250 BANNERS="$BANNERS ${1##*/}"
e2b2282b 251 else
24af2d09 252 NOBANNERS="$NOBANNERS ${1##*/}"
e2b2282b 253 fi
254 ;;
255 esac
256 shift
257done
258
259if [ $ALL_BANNERS -ne 0 ]; then
260 BANNERS=`get_all_banner_list`
261fi
262if [ $NEED_BANNER_LIST -ne 0 ];then
263 BANNER_LIST=`get_banner_list "$BANNERS" "$NOBANNERS"`
264fi
265if [ $NEED_MTIME_CHECK -ne 0 ];then
266 BANNER_LIST=`check_banners_mtime "$BANNER_LIST" "$CHOOSE_OLDER" "$CHOOSE_NEWER"`
267fi
268
269case $ACTION in
270 "delete")
271 delete_banners $BANNER_LIST;
272 ;;
273 "make")
274 make_banner $NEW_BANNER $NEW_SHOW;
275 ;;
276 "names")
277 echo $BANNER_LIST;
278 ;;
279 "show")
280 show_banners $BANNER_LIST;
281 ;;
282esac
283
284
285
This page took 0.074696 seconds and 4 git commands to generate.