1#!/bin/sh
2
3# PTFLG - small filelist generator
4# uses protick.cfg, supports files.lng and writes ifcico-reqmap
5# written by Sascha Silbe <Sascha.Silbe@ldknet.org>
6# License: GNU General Public License (GPL)
7
8#
9# configuration
10#
11
12PROGNAME=PTFLG
13PROGVERSION=1.1
14
15# path and filename of protick.cfg
16PROTICKCFG=/husky/cfg/protick.cfg
17# path and filename of filelist to be written
18FILELIST=/husky/files/24350424.all
19# path and filename of temporary filelist
20TEMPFILELIST=/husky/work/24350424.all.tmp
21# path and filename of compressed (pkzip) filelist
22FILELISTZIP=/husky/files/24350424.zip
23# path and filename of temporary directory list
24DIRLIST=/husky/work/filearea.lst
25# fileareas basepath, will be stripped from areanames
26BASEPATH=/husky/files
27# filelist header
28HEADERFILE=/husky/cfg/filelist.head
29# this file is prepended to OKFILE
30MAGICFILE=/husky/cfg/magic.cfg
31# ifcico request-map
32REQMAP=/husky/cfg/reqmap
33# temporary reqmap
34TEMPREQMAP=/husky/work/reqmap.tmp
35# binkley okfile
36OKFILE=/husky/cfg/okfile.lst
37# temporary okfile
38TEMPOKFILE=/husky/cfg/okfile.lst.tmp
39
40echo $PROGNAME V$PROGVERSION
41
42#
43# generate list of directories
44#
45
46echo generating dirlist
47cat ${PROTICKCFG} \
48| sed -e "/^\;/d" \
49| awk '
50  BEGIN {
51    area=""
52  }
53  /^[Aa][Rr][Ee][Aa]=/ {
54    area=$0
55    sub(/[Aa][Rr][Ee][Aa]=/, "", area)
56    next
57  }
58  /^[Pp][Aa][Tt][Hh]=/ {
59    if (match(tolower(area), /^autocreate:[0-9]+$/) == 0) {
60      sub(/[Pp][Aa][Tt][Hh]=/, "", $0)
61      print $0
62    }
63  }
64  {
65    next
66  }
67' \
68| sort \
69> ${DIRLIST}
70
71#
72# generate filelist
73#
74
75echo generating temporary reqmap, filelist and okfile
76
77# init files
78echo > ${TEMPREQMAP}
79echo @FILES $FILELISTZIP > $TEMPOKFILE
80cat $MAGICFILE >> $TEMPOKFILE
81
82# copy static header to filelist
83cp ${HEADERFILE} ${TEMPFILELIST}
84
85# process areas
86for f in `cat ${DIRLIST}` ; do
87 f1=${f##${BASEPATH}/}
88
89# add entry to okfile
90 echo $f/\* >> $TEMPOKFILE
91
92# print areaname
93 echo
94 echo ------------------------------------------------------------------------------
95 echo Area $f1
96 echo ------------------------------------------------------------------------------
97 echo
98 if [ -f $f/files.bbs ] ; then
99  cat $f/files.bbs \
100  | awk '/[ +*]/ { print $0 }
101    { if (system("test -f '$f'/" $1) == 0) { print $1 " " "'$f'/" $1 >> "'${TEMPREQMAP}'" } }' 2> /dev/null
102 fi
103 if [ -f $f/files.lng ] ; then
104  cat $f/files.lng \
105  | awk '{ print $2 " '$f'/" $1 }' \
106  >> ${TEMPREQMAP}
107 fi
108
109# empty line after each area
110 echo
111 done \
112|sed "/^Area /s#/#.#g" \
113>> ${TEMPFILELIST}
114
115# write variable footer
116echo >> ${TEMPFILELIST}
117echo >> ${TEMPFILELIST}
118echo >> ${TEMPFILELIST}
119echo ============================================================================== >> ${TEMPFILELIST}
120echo >> ${TEMPFILELIST}
121echo Filelist generated on `date +%d.%m.%Y` by ${PROGNAME} ${PROGVERSION} >> ${TEMPFILELIST}
122echo >> ${TEMPFILELIST}
123echo ============================================================================== >> ${TEMPFILELIST}
124echo >> ${TEMPFILELIST}
125
126echo copying temporary files to final ones
127cp $TEMPFILELIST $FILELIST
128cp $TEMPREQMAP $REQMAP
129cp $TEMPOKFILE $OKFILE
130
131echo removing temporary files
132rm $TEMPFILELIST $TEMPREQMAP $TEMPOKFILE $DIRLIST
133
134echo compressing filelist
135zip -9j ${FILELISTZIP} ${FILELIST}
136
137echo finished
138