2006-06-15 [mones] 2.3.0cvs15
[claws.git] / tools / make.themes.project
1 #!/bin/bash
2 #
3 # Generate the source directory for sylpheed-claws-themes package
4 # from the theme tarballs in http://sylpheed-claws.net/themes.php
5 #
6 # Copyright (c) 2006 Ricardo Mones <ricardo@mones.org>
7 #                    Paul Mangan <claws@thewildbeast.co.uk>
8 #
9 # This program is free software; you can redistribute it and/or modify
10 # it under the terms of the GNU General Public License as published by
11 # the Free Software Foundation; either version 2 of the License, or
12 # (at your option) any later version.
13 #
14 # This program is distributed in the hope that it will be useful,
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 # GNU General Public License for more details.
18 #
19 # You should have received a copy of the GNU General Public License
20 # along with this program; if not, write to the Free Software
21 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
22
23
24 function printHelp()
25 {
26   echo "Syntax: ";
27   echo "  $0 version {--clean[-all]|--download|--autotoolize|--all}"
28 }
29
30 test x$1 = x && echo "Error: version number not given" && printHelp && exit 1;
31
32 VERS=$1
33 shift;
34 SITE=http://sylpheed-claws.net
35 NAME=sylpheed-claws-themes
36 NOTES=RELEASE_NOTES
37 DDIR=$NAME-$VERS
38 PAGE=themes.php
39 LIST=themes.list
40 WLOG=themes.wget.log
41
42 function getListFromPage()
43 {
44   test -f ${PAGE} && rm -f ${PAGE};
45   wget -q -a ${WLOG} ${SITE}/${PAGE}
46   test ! -f ${PAGE} && echo "Error: couldn't get ${PAGE}." && exit 1;
47
48   grep 'download.php?file=' ${PAGE} \
49        | cut -f2 -d\" \
50        > ${LIST}
51 }
52
53 function makeRoomForThemes()
54 {
55   test -d ${DDIR} \
56     && rm -rf ${DDIR} \
57     && echo "Removing previous destination";
58   mkdir ${DDIR};
59 }
60
61 function downloadThemes()
62 {
63   for theme in `cat ${LIST} `;
64   do tarf=`echo $theme | cut -f2 -d/ `;
65      echo -n "Downloading... ";
66      wget -q -a ${WLOG} -P ${DDIR} ${SITE}/$theme
67      test ! -f ${DDIR}/$tarf && echo "Error: couldn't get $tarf" && exit 1;
68      pushd ${DDIR} > /dev/null
69      tarops="";
70      test ${tarf} = ${tarf/.tar.bz2/} && tarops="xzf" || tarops="xjf";
71      echo -n "unpacking... " \
72           && tar $tarops $tarf \
73           && echo -n "deleting tarball... " \
74           && rm -f $tarf \
75           && echo "Ok ($tarf)";
76      popd > /dev/null
77   done;
78 }
79
80 function removeWhitespaces()
81 {
82   cd ${DDIR};
83   for dir in *;
84   do test -d "$dir" \
85        && test ! "${dir}" = "${dir/ /_}" \
86        && mv "${dir}" "${dir// /_}"; 
87   done;
88   cd "..";
89 }
90
91 function createProject()
92 {
93   touch ${DDIR}/${NAME} ${DDIR}/${NOTES}
94 }
95
96 function createThemeMakefileAm()
97 {
98   echo "Making $1";
99   MA="/tmp/tmp.makefile.am";
100   cd "$1"
101   dir="$1";
102   echo 'themedir = $(prefix)/share/sylpheed-claws/themes/'${dir} > $MA
103   echo "" >> $MA
104   echo -n 'dist_theme_DATA =' >> $MA 
105   test -f .sylpheed_themeinfo \
106     && echo " .sylpheed_themeinfo \\" >> $MA;
107   count=`ls *.xpm | wc -l `;
108   i=1;
109   for px in `ls -1 *.xpm `; 
110   do if [ $i -lt $count ]; 
111      then echo " $px \\" >> $MA; 
112      else echo " $px" >> $MA; 
113      fi; 
114      i=$((1 + $i)); 
115   done;
116   echo "" >> $MA;
117   count=`ls * | grep -v '\.xpm$' | wc -l `;
118   if [ $count -gt 0 ];
119   then echo -n 'EXTRA_DIST =' >> $MA;
120        i=1;
121        for npx in `ls -1 * | grep -v '\.xpm$' `;
122        do if [ $i -lt $count ];
123           then echo " $npx \\" >> $MA;
124           else echo " $npx" >> $MA;
125           fi;
126           i=$((1 + $i));
127        done;
128        echo "" >> $MA;
129   fi;
130   mv $MA Makefile.am
131   cd ".."
132 }
133
134 function createAutogenSh()
135 {
136   cat<<EOA > ${DDIR}/autogen.sh
137 #!/bin/sh
138
139 aclocal \
140   && automake --add-missing --foreign --copy \
141   && autoconf \
142   && ./configure --enable-maintainer-mode $@
143 EOA
144   chmod +x ${DDIR}/autogen.sh
145   echo "Created autogen.sh"
146 }
147
148 function createMakefileAm()
149 {
150   cd ${DDIR}
151   MA=Makefile.am
152   echo "EXTRA_DIST = INSTALL "${NOTES} ${NAME} > $MA
153   echo "" >> $MA
154   echo -n "SUBDIRS =" >> $MA
155   for dir in *;
156   do test -d "$dir" && echo -n " ${dir}" >> $MA;
157   done;
158   echo "" >> $MA
159   echo "" >> $MA
160   echo "BZIP2_ENV =" >> $MA
161   echo "" >> $MA
162   echo "release: distdir" >> $MA
163   echo "        -chmod -R a+r \$(distdir)" >> $MA
164   echo "        GZIP=\$(GZIP_ENV) \$(AMTAR)\$(TAR) chozf \$(distdir).tar.gz \$(distdir)" >> $MA
165   echo "        BZIP2=\$(BZIP2_ENV) \$(AMTAR)\$(TAR) --bzip2 -chof \$(distdir).tar.bz2 \$(distdir)" >> $MA
166   echo "        -rm -rf \$(distdir)" >> $MA
167   echo "" >> $MA
168   cd ".."
169   echo "Created Makefile.am"
170 }
171
172 function createConfigureAc()
173 {
174   cd ${DDIR}
175   CA=configure.ac
176   echo 'AC_PREREQ(2.59d)' > $CA
177   echo 'AC_INIT('${NAME}')' >> $CA
178   echo 'AM_INIT_AUTOMAKE('${NAME}', '${VERS}')' >> $CA
179   cat >> $CA <<EOC
180
181 AM_MAINTAINER_MODE
182
183 dnl Checks for programs.
184 AC_PROG_INSTALL
185
186 AC_OUTPUT([
187 Makefile
188 EOC
189   # the list of Makefiles
190   for dir in *;
191   do test -d "$dir" \
192        && echo "${dir}/Makefile" >> $CA \
193        && createThemeMakefileAm "$dir";
194   done;
195   echo "])" >> $CA
196   cd "..";
197   echo "Created $CA";
198 }
199
200 function cleanMine()
201 {
202   find ${DDIR} -name Makefile.am -delete
203   rm -f \
204      ${DDIR}/autogen.sh \
205      ${DDIR}/configure.ac \
206      ${DDIR}/${NAME}
207 }
208
209 function cleanGenerated()
210 {
211   find ${DDIR} -name Makefile.in -delete
212   find ${DDIR} -name Makefile -delete
213   rm -rf ${DDIR}/autom4te.cache
214   rm -f \
215      ${DDIR}/aclocal.m4 \
216      ${DDIR}/install-sh \
217      ${DDIR}/missing \
218      ${DDIR}/config.status \
219      ${DDIR}/configure \
220      ${DDIR}/config.log
221 }
222
223 case "$1" in
224   --clean)
225       cleanMine;      
226       echo "Cleaned.";
227     ;;
228   --clean-all)
229       cleanMine;
230       cleanGenerated;
231       echo "Cleaned all.";
232     ;;
233   --download)
234       getListFromPage;
235       makeRoomForThemes;
236       downloadThemes;
237       echo "Downloaded.";
238     ;;
239   --autotoolize)
240       removeWhitespaces;
241       createProject;
242       createAutogenSh;
243       createMakefileAm;
244       createConfigureAc;
245       echo "Autotoolized.";
246     ;;
247   --all)
248     $0 $VERS --download
249     $0 $VERS --autotoolize
250     echo "Done.";
251     ;;
252   *)
253       printHelp;
254     ;;
255 esac
256