]> git.pld-linux.org Git - packages/rpm.git/blob - banner.sh
- don't output pkgconfig dependency for all *.pc found
[packages/rpm.git] / banner.sh
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 #
9 CONFIG=/etc/sysconfig/banner
10
11 ####################################################### CONFIG ########
12
13 # default paramaters
14 ##########################
15
16 BANNERDIR="/var/lib/banner/"
17 # egrep regexp
18 EXCLUDEFILES="(rpmnew$|rpmsave$|~$)"
19 STDOUT="1"  # stdout by default
20 #STDOUT="2" # stderr by default
21
22 # config paramaeters
23 ##########################
24
25 if [ -r $CONFIG ]; then
26         . $CONFIG
27 fi
28
29
30 # override parameters
31 ##########################
32
33 ALL_BANNERS=0
34 BANNERS=""
35 NOBANNERS=""
36 BANNER_LIST=""
37 CHOOSE_NEWER="no"
38 CHOOSE_OLDER="no"
39 EXCLUDE_FLAG=0
40 NEED_BANNER_LIST=0
41 NEED_MTIME_CHECK=0
42 NEW_APPEND=0
43 NEW_BANNER=""
44 NEW_SHOW=0
45
46 case $STDOUT in
47         [1-9]) ;;
48         *) STDOUT="1" ;;
49 esac
50
51 #################################################### FUNCTIONS ########
52
53 Usage()
54 {
55         cat << EOF
56 Usage:  $(basename $0) [opitions] [banners]
57 EOF
58 }
59 Help()
60 {
61         Usage
62         cat << EOF
63 -a
64 --all       - all banners
65 --delete    - delete wanted banners
66 -e
67 --exclude   - exclude following banners (useful with -a)
68 -h
69 --help      - show this help
70 -i
71 --include   - cancel effect of -e (EXCLUDED banners will remain excluded)
72 -m
73 --make      - make a brand-new banner named as following parameter [1] (from stdin)
74 -M          - same as above, but append if file exists
75 -n
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
79 -s
80 --show      - show wanted banners
81 --stderr    - send banner to stderr instead of stdout (or other)
82 --stdout    - send banner to stdout instead of stderr (or other)
83 -u
84 --usage     - show short help
85
86 [1] - if there will be no slash ('/') in name then config dir will be used,
87       else -- specified.
88 EOF
89 }
90 Unknown_para()
91 {
92         cat << EOF
93 Unknown parameter $1
94 EOF
95         Help
96 }
97
98 check_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 }
115 delete_banners()
116 {
117         BANNERS="$1"
118         rm -rf $(get_banner_location_list "$BANNER")
119 }
120 get_all_banner_list()
121 {
122         ls "$BANNERDIR" | grep -E -v "$EXCLUDEFILES"
123 }
124 get_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 }
134 get_banner_location_list()
135 {
136         BANNERS="$1"
137         for BANNER in $BANNERS; do
138                 echo "$BANNERDIR/$BANNER"
139         done
140 }
141 make_banner()
142 {
143         BANNER="$1"
144         SHOW="$2"
145         if [ ! -d "${BANNER%/*}" ]; then
146                 mkdir -p "${BANNER%/*}"
147         fi
148         data=$(cat)
149         if [ $NEW_APPEND -eq 0 ]; then
150                 echo "$data" > $BANNER
151         else
152                 echo "$data" >> $BANNER
153         fi
154         if [ $SHOW -eq 1 ];then
155                 echo "$data"
156         fi
157 }
158 show_banner()
159 {
160         cat $BANNERDIR/$1 >&$STDOUT
161 }
162 show_banners()
163 {
164         for BANNER in $*; do
165                 show_banner $BANNER
166         done
167 }
168 ######################################################## MAIN ########
169 while [ ! -z $1 ]; do
170         case $1 in
171                 -a|--all)
172                         ALL_BANNERS=1
173                         ;;
174                 --delete)
175                         NEED_BANNER_LIST=1
176                         ACTION="delete"
177                         ;;
178                 -e|--exclude)
179                         EXCLUDE_FLAG=1
180                         ;;
181                 -h|--help)
182                         Help
183                         exit 0
184                         ;;
185                 -i|--include)
186                         EXCLUDE_FLAG=0
187                         ;;
188                 -m|--make|-M)
189                         NEED_BANNER_LIST=0
190                         if [[ $2 != */* ]]; then
191                                 NEW_BANNER="$BANNERDIR/${2##*/}"
192                         else
193                                 NEW_BANNER="$2"
194                         fi
195                         ACTION="make"
196                         if [ "$1" == "-M" ];then
197                                 NEW_APPEND=1
198                         else
199                                 NEW_APPEND=0
200                         fi
201                         if [ -z "$NEW_BANNER" ];then
202                                 Help
203                                 exit 2
204                         fi
205                         shift
206                         ;;
207                 -n|--names)
208                         NEED_BANNER_LIST=1
209                         ACTION="names"
210                         ;;
211                 --newer)
212                         NEED_MTIME_CHECK=1
213                         CHOOSE_NEWER="$2"
214                         if [ -z "$CHOOSE_NEWER" ];then
215                                 Help
216                                 exit 2
217                         fi
218                         shift
219                         ;;
220                 --older)
221                         NEED_MTIME_CHECK=1
222                         CHOOSE_OLDER="$2"
223                         if [ -z "$CHOOSE_OLDER" ];then
224                                 Help
225                                 exit 2
226                         fi
227                         shift
228                         ;;
229                 -s|--show)
230                         NEED_BANNER_LIST=1
231                         NEW_SHOW=1
232                         ACTION="show"
233                         ;;
234                 --stdout)
235                         STDOUT="1"
236                         ;;
237                 --stderr)
238                         STDOUT="2"
239                         ;;
240                 -u|--usage)
241                         Usage
242                         exit 0
243                         ;;
244                 -*)
245                         Unknown_para "$1"
246                         exit 1
247                         ;;
248                 *)
249                         if [ $EXCLUDE_FLAG -eq 0 ];then
250                                 BANNERS="$BANNERS ${1##*/}"
251                         else
252                                 NOBANNERS="$NOBANNERS ${1##*/}"
253                         fi
254                         ;;
255         esac
256         shift
257 done
258
259 if [ $ALL_BANNERS -ne 0 ]; then
260         BANNERS=`get_all_banner_list`
261 fi
262 if [ $NEED_BANNER_LIST -ne 0 ];then
263         BANNER_LIST=`get_banner_list "$BANNERS" "$NOBANNERS"`
264 fi
265 if [ $NEED_MTIME_CHECK -ne 0 ];then
266         BANNER_LIST=`check_banners_mtime "$BANNER_LIST" "$CHOOSE_OLDER" "$CHOOSE_NEWER"`
267 fi
268
269 case $ACTION in
270         "delete")
271                 delete_banners $BANNER_LIST;
272                 ;;
273         "make")
274                 make_banner $NEW_BANNER $NEW_SHOW;
275                 ;;
276         "names")
277                 echo $BANNER_LIST;
278                 ;;
279         "show")
280                 show_banners $BANNER_LIST;
281                 ;;
282 esac
283
284
285
This page took 0.043986 seconds and 3 git commands to generate.