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