]> git.pld-linux.org Git - packages/rpm.git/blame - banner.sh
- fix symlinks install, release 1.
[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"
24af2d09 145 mkdir -p "${BANNER%/*}"
2fbc8cb5 146 data=$(cat)
e2b2282b 147 if [ $NEW_APPEND -eq 0 ]; then
2fbc8cb5 148 echo "$data" > $BANNER
e2b2282b 149 else
2fbc8cb5 150 echo "$data" >> $BANNER
e2b2282b 151 fi
152 if [ $SHOW -eq 1 ];then
2fbc8cb5 153 echo "$data"
e2b2282b 154 fi
155}
156show_banner()
157{
bbb3b084 158 cat $BANNERDIR/$1 >&$STDOUT
e2b2282b 159}
160show_banners()
161{
162 for BANNER in $*; do
163 show_banner $BANNER
164 done
165}
166######################################################## MAIN ########
167while [ ! -z $1 ]; do
168 case $1 in
169 -a|--all)
170 ALL_BANNERS=1
171 ;;
172 --delete)
173 NEED_BANNER_LIST=1
174 ACTION="delete"
175 ;;
176 -e|--exclude)
177 EXCLUDE_FLAG=1
178 ;;
179 -h|--help)
180 Help
181 exit 0
182 ;;
183 -i|--include)
184 EXCLUDE_FLAG=0
185 ;;
186 -m|--make|-M)
187 NEED_BANNER_LIST=0
24af2d09
ER
188 if [[ $2 != */* ]]; then
189 NEW_BANNER="$BANNERDIR/${2##*/}"
e2b2282b 190 else
191 NEW_BANNER="$2"
192 fi
193 ACTION="make"
194 if [ "$1" == "-M" ];then
195 NEW_APPEND=1
196 else
197 NEW_APPEND=0
198 fi
199 if [ -z "$NEW_BANNER" ];then
200 Help
201 exit 2
202 fi
203 shift
204 ;;
205 -n|--names)
206 NEED_BANNER_LIST=1
207 ACTION="names"
208 ;;
209 --newer)
210 NEED_MTIME_CHECK=1
211 CHOOSE_NEWER="$2"
212 if [ -z "$CHOOSE_NEWER" ];then
213 Help
214 exit 2
215 fi
216 shift
217 ;;
218 --older)
219 NEED_MTIME_CHECK=1
220 CHOOSE_OLDER="$2"
221 if [ -z "$CHOOSE_OLDER" ];then
222 Help
223 exit 2
224 fi
225 shift
226 ;;
227 -s|--show)
228 NEED_BANNER_LIST=1
229 NEW_SHOW=1
230 ACTION="show"
231 ;;
bbb3b084 232 --stdout)
233 STDOUT="1"
234 ;;
235 --stderr)
236 STDOUT="2"
237 ;;
e2b2282b 238 -u|--usage)
239 Usage
240 exit 0
241 ;;
242 -*)
243 Unknown_para "$1"
244 exit 1
245 ;;
246 *)
247 if [ $EXCLUDE_FLAG -eq 0 ];then
24af2d09 248 BANNERS="$BANNERS ${1##*/}"
e2b2282b 249 else
24af2d09 250 NOBANNERS="$NOBANNERS ${1##*/}"
e2b2282b 251 fi
252 ;;
253 esac
254 shift
255done
256
257if [ $ALL_BANNERS -ne 0 ]; then
258 BANNERS=`get_all_banner_list`
259fi
260if [ $NEED_BANNER_LIST -ne 0 ];then
261 BANNER_LIST=`get_banner_list "$BANNERS" "$NOBANNERS"`
262fi
263if [ $NEED_MTIME_CHECK -ne 0 ];then
264 BANNER_LIST=`check_banners_mtime "$BANNER_LIST" "$CHOOSE_OLDER" "$CHOOSE_NEWER"`
265fi
266
267case $ACTION in
268 "delete")
269 delete_banners $BANNER_LIST;
270 ;;
271 "make")
272 make_banner $NEW_BANNER $NEW_SHOW;
273 ;;
274 "names")
275 echo $BANNER_LIST;
276 ;;
277 "show")
278 show_banners $BANNER_LIST;
279 ;;
280esac
281
282
283
This page took 0.065939 seconds and 4 git commands to generate.