]> git.pld-linux.org Git - packages/rpm.git/blame - banner.sh
- reflow help screen
[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
121 if [ -r "$BANNERDIR/$BANNER" ];then
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
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}
160######################################################## MAIN ########
9d132bfd
TP
161while [ -n "$1" ]; do
162 case "$1" in
e2b2282b 163 -a|--all)
164 ALL_BANNERS=1
165 ;;
df4c41a4 166 -d|--delete)
e2b2282b 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
9d132bfd 182 if [[ "$2" != */* ]]; then
24af2d09 183 NEW_BANNER="$BANNERDIR/${2##*/}"
e2b2282b 184 else
185 NEW_BANNER="$2"
186 fi
187 ACTION="make"
9d132bfd 188 if [ "$1" = "-M" ];then
e2b2282b 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 ;;
bbb3b084 226 --stdout)
227 STDOUT="1"
228 ;;
229 --stderr)
230 STDOUT="2"
231 ;;
e2b2282b 232 -u|--usage)
233 Usage
234 exit 0
235 ;;
236 -*)
237 Unknown_para "$1"
238 exit 1
239 ;;
240 *)
241 if [ $EXCLUDE_FLAG -eq 0 ];then
24af2d09 242 BANNERS="$BANNERS ${1##*/}"
e2b2282b 243 else
24af2d09 244 NOBANNERS="$NOBANNERS ${1##*/}"
e2b2282b 245 fi
246 ;;
247 esac
248 shift
249done
250
251if [ $ALL_BANNERS -ne 0 ]; then
252 BANNERS=`get_all_banner_list`
253fi
254if [ $NEED_BANNER_LIST -ne 0 ];then
255 BANNER_LIST=`get_banner_list "$BANNERS" "$NOBANNERS"`
256fi
257if [ $NEED_MTIME_CHECK -ne 0 ];then
258 BANNER_LIST=`check_banners_mtime "$BANNER_LIST" "$CHOOSE_OLDER" "$CHOOSE_NEWER"`
259fi
260
261case $ACTION in
262 "delete")
263 delete_banners $BANNER_LIST;
264 ;;
265 "make")
266 make_banner $NEW_BANNER $NEW_SHOW;
267 ;;
268 "names")
269 echo $BANNER_LIST;
270 ;;
271 "show")
272 show_banners $BANNER_LIST;
273 ;;
df4c41a4
TP
274 "")
275 Help
276 ;;
e2b2282b 277esac
278
279
280
This page took 0.084299 seconds and 4 git commands to generate.