added missing textfile test
[wxWidgets.git] / distrib / msw / makeinno.sh
1 #! /bin/sh
2 # Make an Inno Setup distribution list, where files and dirs are represented by
3 # sections like this:
4 # [Dirs]
5 # Name: {app}\backgrounds
6 #
7 # [Files]
8 # Source: C:\program\setup\about.htm; DestDir: {app}\; DestName: about.htm
9 #
10 #
11 # Usage: makeinno.sh sourcedir inno-topfile inno-bottomfile destfile
12 # For example: makeinno.sh c:/project/allfiles c:/project/innotop.txt c:/project/innobott.txt c:/project/project.iss
13 #
14
15 PROGNAME=$0
16 SOURCEDIR=$1
17 TOPFILE=$2
18 BOTTOMFILE=$3
19 INNOFILE=$4
20 TEMPDIR=/tmp
21
22 dochecks()
23 {
24 if [ "$SOURCEDIR" = "" ] || [ "$TOPFILE" = "" ] || [ "$BOTTOMFILE" = "" ] || [ "$INNOFILE" = "" ] ; then
25 usage
26 fi
27
28 if [ ! -d $SOURCEDIR ]; then
29 echo "Sorry, the source directory $SOURCEDIR does not exist."
30 usage
31 fi
32
33 if [ ! -f $TOPFILE ]; then
34 echo "Sorry, the Inno Setup header $TOPFILE does not exist."
35 usage
36 fi
37
38 if [ ! -f $BOTTOMFILE ]; then
39 echo "Sorry, the Inno Setup header $BOTTOMFILE does not exist."
40 usage
41 fi
42
43 if [ ! -d $TEMPDIR ]; then
44 mkdir $TEMPDIR
45 fi
46 }
47
48 doreplace()
49 {
50 thefile=$1
51 theexpr=$2
52
53 if [ -f $thefile ]; then
54 sed -e "$theexpr" < $thefile > $thefile.tmp
55 mv $thefile.tmp $thefile
56 else
57 echo "*** $thefile not found."
58 fi
59 }
60
61 generateinno()
62 {
63 # SRCDIR=`cygpath -u $SRCDIR`
64 # DESTDIR=`cygpath -u $DESTDIR`
65 # TEMPDIR=`cygpath -u $TEMP`
66
67
68 # Generate a list of all files in the distribution.
69 # We pass the output through sed in order to remove the preceding "./"
70 cd $SOURCEDIR
71 find . -print | sed -e "s/\.\\///g" > $TEMPDIR/files1.tmp
72
73 echo "[Dirs]" > $TEMPDIR/files2.tmp
74
75 for line in `cat $TEMPDIR/files1.tmp` ; do
76
77 # If a directory, add to file
78 if [ -d $line ] ; then
79 # The relative path
80 # TODO: make into DOS filename form
81 #line2=`cygpath -w $line`
82 line2=$line
83
84 echo " Name: {app}\\"$line2 >> $TEMPDIR/files2.tmp
85 fi
86 done
87
88 echo "" >> $TEMPDIR/files2.tmp
89 echo "[Files]" >> $TEMPDIR/files2.tmp
90
91 for line in `cat $TEMPDIR/files1.tmp` ; do
92
93 # If not a directory, add to file
94 if [ ! -d $line ] ; then
95 # The relative path
96 # TODO: make into DOS filename form
97 #line2=`cygpath -w $line`
98 line2=$line
99
100 # The absolute path
101 # TODO: make into DOS filename form
102 #line1=`cygpath -w $SOURCEDIR`"\\"$line2
103 line1=$SOURCEDIR"\\"$line2
104 #pathonly=`find $line -printf "%h"`
105 pathonly=`dirname $line`
106
107 echo " Source: "$line1"; DestDir: {app}\\"$pathonly >> $TEMPDIR/files2.tmp
108 fi
109 done
110
111 echo "" >> $TEMPDIR/files2.tmp
112
113 doreplace $TEMPDIR/files2.tmp "s/\//\\\/g"
114
115 # Concatenate the 3 sections
116 cat $TOPFILE $TEMPDIR/files2.tmp $BOTTOMFILE > $INNOFILE
117
118 rm -f $TEMPDIR/files1.tmp
119 }
120
121 usage()
122 {
123 echo Usage: $PROGNAME sourcedir inno-topfile inno-bottomfile destfile
124 echo For example: $PROGNAME c:/project/allfiles c:/project/innotop.txt c:/project/innobott.txt c:/project/project.iss
125 echo Remember to use paths of the form c:/thing rather than /c/thing.
126 exit 1
127 }
128
129 dochecks
130 generateinno
131
132