makedocs 6.31 KB
Newer Older
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
#!/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
53
    DLIB_REPOS=`svn info | grep URL | awk '{print $2}' | sed -e 's/\/docs$//'  `
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71

# 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
72
73
        BASE_LOGGER_REVNUM=`echo $LOGGER_REVNUM - 1000 | bc`
        echo Getting the subversion change logs for $DLIB_REPOS/dlib  $LOGGER_REVNUM:$REVISION
74
        svn log $DLIB_REPOS/dlib -v --xml -r$LOGGER_REVNUM:$REVISION > docs/svnlog.txt || report_failure
75
76
        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 
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

        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;

    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://dclib.sourceforge.net" substr($1,2)}' > sitemap.txt
165
166
167
168
169
170

    # 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

171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
    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