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