]> de.git.xonotic.org Git - xonotic/netradiant.git/blob - gendox
error handling in watchbsp (contributed by ilm)
[xonotic/netradiant.git] / gendox
1 #!/bin/bash\r
2 #\r
3 # Shell script to make doxygen documentation by specifying a target directory\r
4 # on the command line\r
5 #\r
6 # Gef (gefdavis@dingoblue.net.au) -- August 2001\r
7 \r
8 # TODO:\r
9 # - Dynamic ChangeLog (page gets updated with each commit)\r
10 # - Have the ability to specify server dox or local dox, which will then\r
11 #   change the content on the main page\r
12 # - Incorporate a scaled gtkradiant splash image into the pages\r
13 \r
14 #------------------------------------------------------------------------\r
15 # Set some variables\r
16 #------------------------------------------------------------------------\r
17 # WORKINGDIR=`pwd`;\r
18 RETVAL=0;\r
19 TARGETSTRING='';\r
20 EXTRAS_PATH="./Doxygen_files";\r
21 CONFIG_OUTPUT="$EXTRAS_PATH/genConf";\r
22 DOXYCONFIG="./DoxyConfig";\r
23 DOXYFILE="$EXTRAS_PATH/Doxyfile";\r
24 NEWDOXYFILE="$EXTRAS_PATH/genDoxyfile";\r
25 declare -a TARGETLIST[$#];\r
26 COUNTER=0;\r
27 TARGETCOUNT=0;\r
28 QUIETMODE=0;\r
29 # added -k command line option to kill running doxygen procs\r
30 KILLON=0\r
31 \r
32 #------------------------------------------------------------------------\r
33 # load the functions\r
34 #------------------------------------------------------------------------\r
35 if [ -f "$EXTRAS_PATH/gendoxfunctions" ] ; then\r
36         . $EXTRAS_PATH/gendoxfunctions\r
37 else\r
38   echo -e "Missing critical files...\n";\r
39   exit 1;\r
40 fi\r
41 \r
42 #------------------------------------------------------------------------\r
43 # parse the command line options\r
44 #------------------------------------------------------------------------\r
45 COMLINE="$*";\r
46 OPTCOUNT="$#";\r
47 parse_commandline;\r
48 if [ $RETVAL -gt 0 ] ; then\r
49         echo -e "Exiting.";\r
50         exit $RETVAL;\r
51 fi\r
52 \r
53 \r
54 if [ $KILLON -gt 0 ] ; then\r
55   PIDOF_DOXYGEN=`pidof -x doxygen`\r
56   MYPID=$$\r
57   \r
58   if [ -z "$PIDOF_DOXYGEN" ] ; then\r
59     [ $QUIETMODE -gt 0 ] || echo -e " * Killing other doxygen pids";\r
60     killall -q -9 doxygen    \r
61   else\r
62     [ $QUIETMODE -gt 0 ] || echo -e " * Killing other doxygen pids";\r
63     kill -9 $PIDOF_DOXYGEN &> /dev/null\r
64   fi\r
65   \r
66   [ $QUIETMODE -gt 0 ] || echo -e " * Cleaning up gendox pids";\r
67   killall -q -9 `pidof -x gendox | sed -e s/$MYPID//` &> /dev/null\r
68   \r
69 fi\r
70 \r
71 # If the output dir hasn't been set yet...\r
72 #if [ -z "$OUTPUTDIR" ] ; then\r
73 #       OUTPUTDIR="../$(basename `pwd`)-doxygen";\r
74 #fi\r
75 \r
76 #------------------------------------------------------------------------\r
77 # execute some functions to determine stuff(c)\r
78 # Get the perl path (either from the config file, or find it)\r
79 #------------------------------------------------------------------------\r
80 get_perlpath;\r
81 if [ X"$PERLPATH" == "X" ] ; then\r
82         echo -e "\nError: A working install of perl is needed to use doxygen";\r
83         exit 2;\r
84 fi\r
85 [ $QUIETMODE -gt 0 ] || echo -e " -> Set PERL_PATH to: $PERLPATH";\r
86 \r
87 get_dotpath;\r
88 [ $QUIETMODE -gt 0 ] || echo -e " -> Set HAVE_DOT to: $HAVEDOT";\r
89 if [ X"$HAVEDOT" == "XYes" ] ; then\r
90         [ $QUIETMODE -gt 0 ] || echo -e " -> Set DOT_PATH to: $DOTPATH";\r
91 fi\r
92 \r
93 get_language;\r
94 [ $QUIETMODE -gt 0 ] || echo -e " -> Set OUTPUT_LANGUAGE to: $OUPUTLANGUAGE";\r
95 \r
96 get_projectname;\r
97 [ $QUIETMODE -gt 0 ] || echo -e " -> Set PROJECT_NAME to: $PROJECTNAME";\r
98 \r
99 get_version;\r
100 [ $QUIETMODE -gt 0 ] || echo -e " -> Set PROJECT_NUMBER to: $VERSION";\r
101 #------------------------------------------------------------------------\r
102 # Got everything we need, now write the DoxyConfig file and run doxygen\r
103 #------------------------------------------------------------------------\r
104 \r
105 # Clean up first\r
106 clean_up;\r
107 \r
108 # Put the images & reference pages in the right place\r
109 move_stuff;\r
110 if [ $RETVAL -ge 666 ] ; then\r
111         exit 666;\r
112 fi\r
113 \r
114 # Generate the config file\r
115 gen_doxyconfig;\r
116 if [ $RETVAL -gt 0 ] ; then\r
117         echo -e "Error: You are missing critical files."\r
118         exit RETVAL;\r
119 fi\r
120 \r
121 # build the reference page and the index\r
122 build_extra_html;\r
123 \r
124 # Generate documentation\r
125 RETVAL=0;\r
126 run_doxygen;\r
127 if [ $RETVAL -gt 0 ] ; then\r
128         echo -e "Doxygen error: returned $RETVAL";\r
129         echo -e " Check doxygen.log for details";\r
130 elif [ $RETVAL -lt 0 ] ; then\r
131         echo -e "Doxygen error: Doxygen returned $RETVAL";\r
132 fi\r
133 \r
134 # if the log file is empty, remove it\r
135 if [ ! -s ./doxygen.log ] ; then\r
136         rm -f ./doxygen.log\r
137 fi\r
138 \r
139 #------------------------------------------------------------------------\r
140 # Done.\r
141 #------------------------------------------------------------------------\r
142 [ $QUIETMODE -gt 0 ] || echo -e "Finished...";\r
143 [ $QUIETMODE -gt 0 ] || echo -e "Duration: $SECONDS seconds\n";\r
144 \r
145 # echo -e "** Removing output while in debug mode **";\r
146 # echo -e "** Output dir: $OUTPUTDIR **\n";\r
147 # rm -rf $OUTPUTDIR\r
148 \r
149 exit 0;\r
150 \r