2 # Functions for the gendox script
\r
6 #------------------------------------------------------------------------
\r
7 # Set the doxygen output language from the system locale
\r
8 #------------------------------------------------------------------------
\r
10 if [ -n "$LANG" ] ; then
\r
11 local LANG=`locale | grep LANG | cut -d= -f2`;
\r
15 OUPUTLANGUAGE="Czech";
\r
18 OUPUTLANGUAGE="German";
\r
21 OUPUTLANGUAGE="Spanish";
\r
24 OUPUTLANGUAGE="Finnish";
\r
27 OUPUTLANGUAGE="French";
\r
30 OUPUTLANGUAGE="Italian";
\r
33 OUPUTLANGUAGE="Japanese";
\r
36 OUPUTLANGUAGE="Dutch";
\r
39 OUPUTLANGUAGE="Swedish";
\r
42 OUPUTLANGUAGE="English";
\r
47 #------------------------------------------------------------------------
\r
48 # Output usage info & output help
\r
49 #------------------------------------------------------------------------
\r
51 echo -e "Usage: $0 [<target(s)>] [-o <output_directory>]";
\r
57 echo -e "\nOptions:";
\r
58 echo -e " [<target(s)>]";
\r
59 echo -e " This is an optional parameter that specifies the directory, or multiple";
\r
60 echo -e " directories from which to generate the documentation.";
\r
62 echo -e " [-o <output_directory>]";
\r
63 echo -e " An optional parameter that specifies the output directory in which";
\r
64 echo -e " to save the generated documentation.";
\r
66 echo -e " -q or --quiet";
\r
67 echo -e " Prevents the output of status information"
\r
69 echo -e " --help, or -h";
\r
70 echo -e " Displays this information";
\r
72 echo -e " -q or --quiet";
\r
73 echo -e " Prevents the output of status information"
\r
75 echo -e " -k or --kill";
\r
76 echo -e " kills running doxygen pids."
\r
78 echo -e "* Further information on using this script, can be found in README.doxygen";
\r
79 echo -e "* in the current directory.";
\r
83 #------------------------------------------------------------------------
\r
84 # Set the target to what was passed on the command line
\r
85 #------------------------------------------------------------------------
\r
86 parse_commandline() {
\r
88 # need to add the ability to check for an auto gen'd version
\r
89 # used for automatically generating new documentation for each commit
\r
92 # funky bash shell array
\r
93 declare -a OPTLIST[$#];
\r
95 if [ $OPTCOUNT == 0 ] ; then
\r
96 # No options on the command line so set the target list to the core
\r
98 OUTPUTDIR="../$(basename `pwd`)-doxygen";
\r
100 # put all the command line options into an array
\r
101 for f in $COMLINE ; do
\r
102 OPTLIST[$COUNTER]="$f";
\r
106 for (( COUNTER=0 ; $COUNTER < $OPTCOUNT; $[COUNTER++] )) ; do
\r
107 if [ "${OPTLIST[$COUNTER]}" == "--help" ] ; then
\r
108 # output usage information
\r
112 elif [ "${OPTLIST[$COUNTER]}" == "-h" ] ; then
\r
113 # output usage information
\r
119 case ${OPTLIST[$COUNTER]} in
\r
133 # look for the -o switch, and get the next command line option as the output dir
\r
134 if [ -z ${OPTLIST[$COUNTER + 1]} ] ; then
\r
135 [ $QUIETMODE -gt 0 ] || echo -e " ** Output switch used, but no output dir passed...";
\r
136 [ $QUIETMODE -gt 0 ] || echo -e " ** Setting default output dir.";
\r
139 OUTPUTDIR=${OPTLIST[$COUNTER]};
\r
144 # If the command line option is anything other that -o then assume it's a target
\r
145 # Check to make sure the target exists first...
\r
146 if [ -d ${OPTLIST[$COUNTER]} ] ; then
\r
147 TARGETLIST[$COUNTER]=${OPTLIST[$COUNTER]};
\r
150 echo -e " ** Error: Non-existent directory specified as a target.\nExiting.";
\r
159 fi # if [ $OPTCOUNT == 0 ] ;
\r
161 if [ $TARGETCOUNT == 0 ] ; then
\r
163 TARGETLIST[0]="include";
\r
164 TARGETLIST[1]="libs";
\r
165 TARGETLIST[2]="radiant";
\r
166 TARGETLIST[3]="plugins";
\r
167 # Gef: outputdir for default core when no targets are passed on the command line
\r
168 # TTimo problem still there, if -o used on command line, don't override
\r
169 if [ -z $OUTPUTDIR ] ; then
\r
170 OUTPUTDIR="../$(basename `pwd`)-doxygen";
\r
174 # Add trailing slash's to the lines that need them
\r
175 TARGETSTRING=`echo ${TARGETLIST[*]} | sed -e 's/" "/", "/'`
\r
176 [ $QUIETMODE -gt 0 ] || echo -ne " -> Set Input to: ";
\r
177 for (( COUNTER=0; COUNTER < $TARGETCOUNT ; $[COUNTER++] )) ; do
\r
178 if [ $COUNTER == $[TARGETCOUNT - 1] ] ; then
\r
179 [ $QUIETMODE -gt 0 ] || echo -ne "${TARGETLIST[$COUNTER]}\n";
\r
180 TARGETLIST[$COUNTER]="${TARGETLIST[$COUNTER]}";
\r
182 [ $QUIETMODE -gt 0 ] || echo -ne "${TARGETLIST[$COUNTER]}, ";
\r
183 TARGETLIST[$COUNTER]="${TARGETLIST[$COUNTER]} \\";
\r
186 [ $QUIETMODE -gt 0 ] || echo -e " -> Set Output Dir to: $OUTPUTDIR";
\r
190 #------------------------------------------------------------------------
\r
191 # Try to extract the version number
\r
192 # todo: find a better way to determine the version
\r
193 #------------------------------------------------------------------------
\r
195 VERSION=`grep PROJECT_NUMBER $DOXYCONFIG | grep -v \# | cut -d= -f2`;
\r
196 if [ -z $VERSION ] ; then
\r
197 if [ -f "./include/version.default" ] ; then # checks that we are in the right dir
\r
198 VERSION=`cat ./include/version.default`;
\r
200 VERSION="(Unknown)";
\r
206 #------------------------------------------------------------------------
\r
207 # Create a projectname from the tree name
\r
208 #------------------------------------------------------------------------
\r
209 get_projectname() {
\r
210 PROJECTNAME=`grep PROJECT_NAME $DOXYCONFIG | grep -v \# | cut -d= -f2`;
\r
211 if [ -z $PROJECTNAME ] ; then
\r
212 # PROJECTNAME=`echo $TARGET | sed -e s/[^A-Za-z0-9]/!/ | cut -d! -f1`;
\r
213 PROJECTNAME="$(basename `pwd`)";
\r
218 #------------------------------------------------------------------------
\r
219 # function to determine the path to the perl executable
\r
220 #------------------------------------------------------------------------
\r
222 if [ -f "$DOXYCONFIG" ] ; then
\r
223 PERLPATH=`grep PERL_PATH $DOXYCONFIG | grep = | cut -d= -f2`
\r
226 if [ 'basename $PERLPATH &2>/dev/null' != "perl" ] ; then
\r
227 PERLPATH=`which perl 2>/dev/null | sed -e 's/perl//'`;
\r
228 elif [ 'basename $PERLPATH &2>/dev/null' != "perl" ] ; then
\r
234 #------------------------------------------------------------------------
\r
235 # Function to determine the path to the dot executable
\r
236 #------------------------------------------------------------------------
\r
238 if [ -f "$DOXYCONFIG" ] ; then
\r
239 DOTPATH=`grep DOT_PATH $DOXYCONFIG | grep = | cut -d= -f2`
\r
242 if [ -z $DOTPATH ] || [ `basename $DOTPATH 2>/dev/null` != "dot" ] ; then
\r
243 DOTPATH=`which dot 2>/dev/null`;
\r
246 if [ -z $DOTPATH ] || [ `basename $DOTPATH 2>/dev/null` != "dot" ] ; then
\r
249 echo -e "** Warning: dot not found.";
\r
250 [ $QUIETMODE -gt 0 ] || echo -e "** dot is part of the GraphVis package and is used to generate";
\r
251 [ $QUIETMODE -gt 0 ] || echo -e "** dependancy/inheritance/include (etc) diagrams.";
\r
252 [ $QUIETMODE -gt 0 ] || echo -e "** It's suggested that you install the GraphVis package for those";
\r
253 [ $QUIETMODE -gt 0 ] || echo -e "** features.";
\r
254 [ $QUIETMODE -gt 0 ] || echo -e "** GraphVis can be downloaded from www.graphvis.org";
\r
257 DOTPATH=`echo $DOTPATH | sed -e 's/dot//'`;
\r
263 #------------------------------------------------------------------------
\r
264 # Function to move stuff around
\r
265 #------------------------------------------------------------------------
\r
266 # eg: move the images into the output directory & the reference doc into the
\r
268 # called after doxygen has finished generating documentation
\r
270 [ $QUIETMODE -gt 0 ] || echo -ne " -> Move stuff.\n";
\r
271 if [ ! -d $OUTPUTDIR ] ; then
\r
275 if [ ! -d "$EXTRAS_PATH/images/" ] ; then
\r
276 [ $QUIETMODE -gt 0 ] || echo -e " - Looking for images.";
\r
277 [ $QUIETMODE -gt 0 ] || sleep 2;
\r
278 [ $QUIETMODE -gt 0 ] || echo -e " - I can't find the images...";
\r
279 [ $QUIETMODE -gt 0 ] || sleep 1;
\r
280 [ $QUIETMODE -gt 0 ] || echo -e " - Where did you put the images!?";
\r
281 [ $QUIETMODE -gt 0 ] || sleep 2;
\r
282 [ $QUIETMODE -gt 0 ] || echo -e " - They have to be here somewhere...";
\r
283 [ $QUIETMODE -gt 0 ] || sleep 1;
\r
284 [ $QUIETMODE -gt 0 ] || echo -e " - Looking in /dev/null";
\r
285 [ $QUIETMODE -gt 0 ] || sleep 3;
\r
286 [ $QUIETMODE -gt 0 ] || echo -e " - YOU FOOL, YOU DELETED THE IMAGES!!!";
\r
287 [ $QUIETMODE -gt 0 ] || sleep 1;
\r
288 [ $QUIETMODE -gt 0 ] || echo -e " - I quit!";
\r
291 if [ ! -d $OUTPUTDIR/images ] ; then
\r
292 mkdir $OUTPUTDIR/images ;
\r
294 cp $EXTRAS_PATH/images/* $OUTPUTDIR/images/ ;
\r
300 #------------------------------------------------------------------------
\r
301 # clean_up() removes old versions of the documentation
\r
302 #------------------------------------------------------------------------
\r
304 if [ -f $OUTPUTDIR/html/index.html ] ; then
\r
305 [ $QUIETMODE -gt 0 ] || echo -e " -> Trashing old dox.";
\r
306 rm -f $OUTPUTDIR/html/*
\r
311 #------------------------------------------------------------------------
\r
312 # Create a new genConf & Doxyfile
\r
313 #------------------------------------------------------------------------
\r
315 [ $QUIETMODE -gt 0 ] || echo -e " -> Generating DoxyConfig.";
\r
317 # first need to make sure there is a Doxyfile here
\r
318 if [ ! -f $DOXYFILE ] ; then
\r
319 # what now? (could generate one with 'doxygen -e Doxyfile') but it would be screwed.
\r
320 echo -e "No Doxyfile here...";
\r
324 # Create a new doxyfile with the @INCLUDE statement including the generated stuff
\r
325 echo "`cat $DOXYFILE | grep -v @INCLUDE`" > $NEWDOXYFILE
\r
326 echo "@INCLUDE = $CONFIG_OUTPUT" >> $NEWDOXYFILE
\r
329 # remove the old config file
\r
330 rm -f $CONFIG_OUTPUT
\r
333 touch $CONFIG_OUTPUT
\r
334 echo "# Generated configuration - Do Not Edit." >> $CONFIG_OUTPUT;
\r
335 echo "# If you want to modify options, edit DoxyConfig and re-run genconf." >> $CONFIG_OUTPUT;
\r
336 echo -e "\n" >> $CONFIG_OUTPUT;
\r
337 echo -e "PROJECT_NAME=$PROJECTNAME" >> $CONFIG_OUTPUT;
\r
338 echo -e "PROJECT_NUMBER=$VERSION" >> $CONFIG_OUTPUT;
\r
339 echo -e "PERL_PATH=$PERLPATH" >> $CONFIG_OUTPUT;
\r
340 echo -e "HAVE_DOT=$HAVEDOT" >> $CONFIG_OUTPUT;
\r
341 echo -e "DOT_PATH=$DOTPATH" >> $CONFIG_OUTPUT;
\r
342 echo -e "OUTPUT_LANGUAGE=$OUTPUTLANGUAGE" >> $CONFIG_OUTPUT;
\r
344 echo -n "INPUT=" >> $CONFIG_OUTPUT;
\r
345 for (( COUNTER=0 ; COUNTER < $TARGETCOUNT; $[COUNTER++] )) ; do
\r
346 # echo -e "${TARGETLIST[$COUNTER]}";
\r
347 echo -e "${TARGETLIST[$COUNTER]}" >> $CONFIG_OUTPUT
\r
349 # echo -e "INPUT=$TARGET" >> $CONFIG_OUTPUT;
\r
351 echo -e "OUTPUT_DIRECTORY=$OUTPUTDIR" >> $CONFIG_OUTPUT;
\r
352 echo -e "\n" >> $CONFIG_OUTPUT;
\r
356 #------------------------------------------------------------------------
\r
357 # Build the reference page & index
\r
358 #------------------------------------------------------------------------
\r
359 build_extra_html() {
\r
361 REF_OUT="$OUTPUTDIR/reference/index.html"
\r
362 INDEX_OUT="$OUTPUTDIR/index.html"
\r
364 # Make the output directory if it doesn't exist
\r
365 if [ ! -d $OUTPUTDIR/reference/ ] ; then
\r
366 [ $QUIETMODE -gt 0 ] || echo -e " -> Making reference directory";
\r
367 mkdir $OUTPUTDIR/reference
\r
370 # cat the files together and output the result to each file
\r
371 [ $QUIETMODE -gt 0 ] || echo -e " -> Building reference document";
\r
372 cat $EXTRAS_PATH/doxygen_reference_head.html $EXTRAS_PATH/reference1.html $EXTRAS_PATH/doxygen_reference_foot.html > $REF_OUT;
\r
374 if [ ! -d $OUTPUTDIR/example/ ] ; then
\r
375 [ $QUIETMODE -gt 0 ] || echo -e " -> Making example dir";
\r
376 mkdir $OUTPUTDIR/example
\r
378 [ $QUIETMODE -gt 0 ] || echo -e " -> Moving example docs";
\r
379 cp $EXTRAS_PATH/example/* $OUTPUTDIR/example/
\r
380 cp $EXTRAS_PATH/doxygen_gtkradiant.css $OUTPUTDIR/example/
\r
382 # Make a redirecting index.html
\r
383 cat $EXTRAS_PATH/doxygen_index.html > $INDEX_OUT;
\r
387 #------------------------------------------------------------------------
\r
389 #------------------------------------------------------------------------
\r
391 # copy doxy_mainpage.h to the target directory
\r
392 # pipe it through sed to add generation time/date and username - $machine
\r
393 TEMPLOCATION=`echo $TARGETSTRING | cut -d' ' -f1`;
\r
394 if [ X"$USERNAME" == "X" ] ; then
\r
397 MACHINE=`uname -n`; # `uname -n` or `hostname` ??
\r
398 cp $EXTRAS_PATH/doxy_mainpage.h temp.h
\r
400 sed "s/+project+/$PROJECTNAME/" |
\r
401 sed "s|+target+|$TARGETSTRING|" |
\r
402 sed "s/+user+/$USERNAME/" |
\r
403 sed "s/+machine+/$MACHINE/" |
\r
404 sed "s/+date+/$(date '+%b %d %Y')/" > $TEMPLOCATION/doxy_mainpage.h ;
\r
408 # Start doxygen with the command "doxygen $DOXYFILE"
\r
409 [ $QUIETMODE -gt 0 ] || echo -e " -> Executing doxygen.";
\r
410 [ $QUIETMODE -gt 0 ] || echo -e "> doxygen $NEWDOXYFILE";
\r
411 doxygen $NEWDOXYFILE
\r
414 # remove doxy_mainpage.h from the target directory
\r
415 rm -f $TEMPLOCATION/doxy_mainpage.h
\r
419 #------------------------------------------------------------------------
\r