1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
#!/bin/bash
report_failure ()
{
echo " **** failed to complete **** "
exit 1
}
htmlify_cmake ()
{
echo "<html><head><title>" > $1.html;
echo $1 >> $1.html;
echo "</title></head><body bgcolor='white'><pre>" >> $1.html;
# line 1: make comments green
# line 2: add links into the add_subdirectory directives
# line 3: make literal quotes red
# line 4: make the directives show up blue
# line 5: make variable names show up purple
sed -e "s/^\([ ]*#.*\)/<font color='#009900'>\1<\/font>/" \
-e "s/add_subdirectory\([ ]*\)(\([ ]*\)\([^ ]*\)\([ ]*\)\([^ )]*\)/add_subdirectory\1(\2\3\4<a href='\3\/CMakeLists.txt.html'>\5<\/a>/" \
-e "s/\"\([^\"]*\)\"/\"<font color='#CC0000'>\1<\/font>\"/g" \
-e "s/^\([ ]*[^( ]*[ ]*\)(/<font color='blue'>\1<\/font>(/" \
-e "s/{\([^}]*\)}/\{<font color='#BB00BB'>\1<\/font>}/g" \
$1 >> $1.html;
echo "</pre></body></html>" >> $1;
}
makedocs ()
{
#make sure the .docs_last_update_rev file exists
if [ ! -f .docs_last_update_rev ]
then
echo 0 > .docs_last_update_rev
fi;
COUNTER_FILE=.current_release_number
MINOR_COUTNER_FILE=.current_minor_release_number
REVNUM_FILE=.logger_revnum
DOCS_LAST_UPDATE_REV=$(cat .docs_last_update_rev)
LOGGER_REVNUM=`cat $REVNUM_FILE`
XSLT_OPTIONS="--nodtdattr --nonet --novalid"
DATE=`date --date= "+%b %d, %Y"`;
# root dlib repository URL
DLIB_REPOS=`svn info | grep URL | awk '{print $2}' | sed -e 's/\/docs$//' `
# The revision number we are currently at
REVISION=`svn info | grep Revision | awk '{ print $2 }'`
if [ "$1" = "snapshot" ]
then
RELEASE="developmental snapshot $REVISION"
else
MAJOR_NUM=`cat $COUNTER_FILE`
MINOR_NUM=`cat $MINOR_COUTNER_FILE`
RELEASE=${MAJOR_NUM}.${MINOR_NUM}
fi;
# update the cache of the library files from subversion if they aren't from the current revision
if [ $DOCS_LAST_UPDATE_REV -ne $REVISION ]
then
BASE_LOGGER_REVNUM=`echo $LOGGER_REVNUM - 1000 | bc`
echo Getting the subversion change logs for $DLIB_REPOS/dlib $LOGGER_REVNUM:$REVISION
svn log $DLIB_REPOS/dlib -v --xml -r$LOGGER_REVNUM:$REVISION > docs/svnlog.txt || report_failure
echo Getting the subversion change logs for $DLIB_REPOS/dlib $BASE_LOGGER_REVNUM:$LOGGER_REVNUM
svn log $DLIB_REPOS/dlib -v --xml -r$BASE_LOGGER_REVNUM:$LOGGER_REVNUM > docs/old_svnlog.txt || report_failure
rm -rf docs/cache
echo $REVISION > .docs_last_update_rev
echo Getting a copy of the source from subversion
svn export -r $REVISION $DLIB_REPOS/examples docs/cache/examples > /dev/null || report_failure
svn export -r $REVISION $DLIB_REPOS/dlib docs/cache/dlib > /dev/null || report_failure
fi;
echo "#ifndef DLIB_REVISION_H" > docs/cache/dlib/revision.h
echo "// Version: " $RELEASE >> docs/cache/dlib/revision.h
echo "// Date: " `date` >> docs/cache/dlib/revision.h
echo "// Subversion Revision Number" >> docs/cache/dlib/revision.h
echo "#define DLIB_REVISION " $REVISION >> docs/cache/dlib/revision.h
echo "#endif" >> docs/cache/dlib/revision.h
rm -rf docs/web/*
rm -rf docs/chm/docs/*
echo Creating HTML version of the source
htmlify --title "dlib C++ Library - " -i docs/cache -o htmltemp.$$
echo Copying files around...
cp -r htmltemp.$$/dlib docs/web
cp -r htmltemp.$$/dlib docs/chm/docs
cp -r htmltemp.$$/examples/* docs/web
cp -r htmltemp.$$/examples/* docs/chm/docs
rm -rf htmltemp.$$
cp docs/cache/dlib/test/makefile docs/web/dlib/test
cp docs/cache/dlib/test/makefile docs/chm/docs/dlib/test
cp docs/cache/dlib/test/CMakeLists.txt docs/web/dlib/test
cp docs/cache/dlib/test/CMakeLists.txt docs/chm/docs/dlib/test
cp docs/cache/dlib/CMakeLists.txt docs/web/dlib
cp docs/cache/dlib/CMakeLists.txt docs/chm/docs/dlib
mkdir docs/web/examples || report_failure
cp docs/cache/examples/CMakeLists.txt docs/web/examples
mkdir docs/chm/docs/examples || report_failure
cp docs/cache/examples/CMakeLists.txt docs/chm/docs/examples
cp docs/*.gif docs/web
cp docs/*.gif docs/chm/docs
cp docs/*.html docs/web
cp docs/*.html docs/chm/docs
cp docs/*.png docs/web
cp docs/*.png docs/chm/docs
cd docs/chm/docs || report_failure
htmlify_cmake dlib/CMakeLists.txt;
htmlify_cmake examples/CMakeLists.txt;
htmlify_cmake dlib/test/CMakeLists.txt;
cd ../../.. || report_failure
cd docs/web || report_failure
htmlify_cmake dlib/CMakeLists.txt;
htmlify_cmake examples/CMakeLists.txt;
htmlify_cmake dlib/test/CMakeLists.txt;
cd ../.. || report_failure
find docs/web docs/chm -name "CMakeLists.txt" | xargs rm
# make the web page version
echo Generate web page from XML and XSLT style sheet
cat docs/stylesheet.xsl | sed -e 's/"is_chm">[^<]*/"is_chm">false/' -e "s/_CURRENT_RELEASE_/$RELEASE/" -e "s/_LAST_MODIFIED_DATE_/$DATE/" \
> docs/stylesheet.$$.xsl
\ls docs/*.xml | xargs -i echo -o {} docs/stylesheet.$$.xsl {} | \
sed -e "s/\.xml /\.html /" | sed -e "s/-o docs/-o docs\/web/" | \
grep -v main_menu. |\
xargs -l xsltproc $XSLT_OPTIONS
rm docs/stylesheet.$$.xsl
# make the chm version
echo Generate non-web page version from XML and XSLT style sheet
cat docs/stylesheet.xsl | sed -e 's/"is_chm">[^<]*/"is_chm">true/' -e "s/_CURRENT_RELEASE_/$RELEASE/" -e "s/_LAST_MODIFIED_DATE_/$DATE/" \
> docs/stylesheet.$$.xsl
\ls docs/*.xml | xargs -i echo -o {} docs/stylesheet.$$.xsl {} | \
sed -e "s/\.xml /\.html /" | sed -e "s/-o docs/-o docs\/chm\/docs/" | \
grep -v main_menu. |\
xargs -l xsltproc $XSLT_OPTIONS
rm docs/stylesheet.$$.xsl
FILES=`find docs/chm docs/web -iname "*.html" -type f`
for i in $FILES
do
sed -e '/<!DOCTYPE/d' ${i} > temp.$$;
mv temp.$$ ${i};
done
echo Generating sitemap
cd docs/web || report_failure
find . -name "*.html" | awk '{ print "http://dlib.net" substr($1,2)}' > sitemap.txt
# make the main index have a 301 redirect. Use php to do this
echo '<?php if ($_SERVER["SERVER_NAME"] != "dlib.net") { header("Location: http://dlib.net/", true, 301); exit; } ?>' > index.php
cat index.html >> index.php
rm index.html
cd ../..
}
./testenv || report_failure
#echo Update the docs to the newest version in subversion
#svn update || report_failure
# build all the html documentation
makedocs $1;
# now make the table of contents for the chm file
echo Generating the table of contents for the chm file
xsltproc -o docs/chm/Table\ of\ Contents.hhc docs/chm/htmlhelp_stylesheet.xsl docs/chm/toc.xml