]> git.pld-linux.org Git - packages/rpm.git/blame - banner.sh
- initial
[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$|~$)"
19
20
21# config paramaeters
22##########################
23
24if [ -r $CONFIG ]; then
25 . $CONFIG
26fi
27
28
29# override parameters
30##########################
31
32ALL_BANNERS=0
33BANNERS=""
34NOBANNERS=""
35BANNER_LIST=""
36CHOOSE_NEWER="no"
37CHOOSE_OLDER="no"
38EXCLUDE_FLAG=0
39NEED_BANNER_LIST=0
40NEED_MTIME_CHECK=0
41NEW_APPEND=0
42NEW_BANNER=""
43NEW_SHOW=0
44
45#################################################### FUNCTIONS ########
46
47Usage()
48{
49 cat << EOF
50Usage: $(basename $0) [opitions] [banners]
51EOF
52}
53Help()
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.
80EOF
81}
82Unknown_para()
83{
84 cat << EOF
85Unknown parameter $1
86EOF
87 Help
88}
89check_banner_name()
90{
91 echo "$1"|sed 's,.*/,,'
92}
93check_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}
110delete_banners()
111{
112 BANNERS="$1"
113 rm -rf $(get_banner_location_list "$BANNER")
114}
115get_all_banner_list()
116{
117 ls "$BANNERDIR" | grep -E -v "$EXCLUDEFILES"
118}
119get_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}
129get_banner_location_list()
130{
131 BANNERS="$1"
132 for BANNER in $BANNERS; do
133 echo "$BANNERDIR/$BANNER"
134 done
135}
136make_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}
150show_banner()
151{
152 cat $BANNERDIR/$1
153}
154show_banners()
155{
156 for BANNER in $*; do
157 show_banner $BANNER
158 done
159}
160######################################################## MAIN ########
161while [ ! -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
243done
244
245if [ $ALL_BANNERS -ne 0 ]; then
246 BANNERS=`get_all_banner_list`
247fi
248if [ $NEED_BANNER_LIST -ne 0 ];then
249 BANNER_LIST=`get_banner_list "$BANNERS" "$NOBANNERS"`
250fi
251if [ $NEED_MTIME_CHECK -ne 0 ];then
252 BANNER_LIST=`check_banners_mtime "$BANNER_LIST" "$CHOOSE_OLDER" "$CHOOSE_NEWER"`
253fi
254
255case $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 ;;
268esac
269
270
271
This page took 0.086717 seconds and 4 git commands to generate.