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