#!/bin/sh # PTFLG - small filelist generator # uses protick.cfg, supports files.lng and writes ifcico-reqmap # written by Sascha Silbe # License: GNU General Public License (GPL) # # configuration # PROGNAME=PTFLG PROGVERSION=1.1 # path and filename of protick.cfg PROTICKCFG=/husky/cfg/protick.cfg # path and filename of filelist to be written FILELIST=/husky/files/24350424.all # path and filename of temporary filelist TEMPFILELIST=/husky/work/24350424.all.tmp # path and filename of compressed (pkzip) filelist FILELISTZIP=/husky/files/24350424.zip # path and filename of temporary directory list DIRLIST=/husky/work/filearea.lst # fileareas basepath, will be stripped from areanames BASEPATH=/husky/files # filelist header HEADERFILE=/husky/cfg/filelist.head # this file is prepended to OKFILE MAGICFILE=/husky/cfg/magic.cfg # ifcico request-map REQMAP=/husky/cfg/reqmap # temporary reqmap TEMPREQMAP=/husky/work/reqmap.tmp # binkley okfile OKFILE=/husky/cfg/okfile.lst # temporary okfile TEMPOKFILE=/husky/cfg/okfile.lst.tmp echo $PROGNAME V$PROGVERSION # # generate list of directories # echo generating dirlist cat ${PROTICKCFG} \ | sed -e "/^\;/d" \ | awk ' BEGIN { area="" } /^[Aa][Rr][Ee][Aa]=/ { area=$0 sub(/[Aa][Rr][Ee][Aa]=/, "", area) next } /^[Pp][Aa][Tt][Hh]=/ { if (match(tolower(area), /^autocreate:[0-9]+$/) == 0) { sub(/[Pp][Aa][Tt][Hh]=/, "", $0) print $0 } } { next } ' \ | sort \ > ${DIRLIST} # # generate filelist # echo generating temporary reqmap, filelist and okfile # init files echo > ${TEMPREQMAP} echo @FILES $FILELISTZIP > $TEMPOKFILE cat $MAGICFILE >> $TEMPOKFILE # copy static header to filelist cp ${HEADERFILE} ${TEMPFILELIST} # process areas for f in `cat ${DIRLIST}` ; do f1=${f##${BASEPATH}/} # add entry to okfile echo $f/\* >> $TEMPOKFILE # print areaname echo echo ------------------------------------------------------------------------------ echo Area $f1 echo ------------------------------------------------------------------------------ echo if [ -f $f/files.bbs ] ; then cat $f/files.bbs \ | awk '/[ +*]/ { print $0 } { if (system("test -f '$f'/" $1) == 0) { print $1 " " "'$f'/" $1 >> "'${TEMPREQMAP}'" } }' 2> /dev/null fi if [ -f $f/files.lng ] ; then cat $f/files.lng \ | awk '{ print $2 " '$f'/" $1 }' \ >> ${TEMPREQMAP} fi # empty line after each area echo done \ |sed "/^Area /s#/#.#g" \ >> ${TEMPFILELIST} # write variable footer echo >> ${TEMPFILELIST} echo >> ${TEMPFILELIST} echo >> ${TEMPFILELIST} echo ============================================================================== >> ${TEMPFILELIST} echo >> ${TEMPFILELIST} echo Filelist generated on `date +%d.%m.%Y` by ${PROGNAME} ${PROGVERSION} >> ${TEMPFILELIST} echo >> ${TEMPFILELIST} echo ============================================================================== >> ${TEMPFILELIST} echo >> ${TEMPFILELIST} echo copying temporary files to final ones cp $TEMPFILELIST $FILELIST cp $TEMPREQMAP $REQMAP cp $TEMPOKFILE $OKFILE echo removing temporary files rm $TEMPFILELIST $TEMPREQMAP $TEMPOKFILE $DIRLIST echo compressing filelist zip -9j ${FILELISTZIP} ${FILELIST} echo finished