summaryrefslogtreecommitdiffstats
path: root/bin/build-docs/build-docs
blob: c460c98a7656187c197f4d49e5f8d660926584b6 (plain)
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
#!/bin/bash
#
# Written by stickster :)
# Mangled by megacoder ;-P
# Further editing and packaging by nman64
#
# Dedicated to the lazy Fedora Docs heroes. ;-)
#
# Pull all active FDP docs from CVS, build and install HTML in
# TARGETDIR folder.
#

MYSELF="$(basename "$0")"
NOW="$(date +%Y%m%d%H%M%S)"

print_usage() {
    echo "$MYSELF: Usage: $MYSELF [options...]"
    echo "   -h           : print usage (this message)"
    echo "   -m WORKDIR   : set home directory, default $HOME"
    echo "   -f FDPDIR    : set d/l dir for CVS, default $FDPDIR"
    echo "   -D TARGETDIR : set target dir for built files, default $TARGETDIR"
    echo "   -a ANONCVS   : set CVS repo location (cvs -d), default $ANONCVS"
    echo "   -r REV       : checkout REV from CVS (global), default $REV"
    echo "   -Q           : make CVS checkout less quiet"
    echo "   -c           : build chunked HTML"
    echo "   -n           : build HTML nochunks"
    echo "   -p           : build PDF (not working currently)"
    echo "   -t           : build tarball"
    echo "   -k           : continue building in face of errors"
}


set_vars() {
    [ -z "$WORKDIR" ] && WORKDIR="${HOME}"
    [ -z "$FDPDIR" ] && FDPDIR="${WORKDIR}/fdpdocs-cvs${NOW}"
    [ -z "$TARGETDIR" ] && TARGETDIR="/var/www/webtest/docs"
    # Do this anonymously for now
    [ -z "$ANONCVS" ] && ANONCVS=":pserver:anonymous@cvs.fedora.redhat.com:/cvs/docs"
    [ -z "$REV" ] && REV="HEAD"
    [ -z "$REDIR" ] && REDIR="/dev/null"
    [ -z "$QUIET" ] && QUIET="-Q"
}


# just to make sure defaults are read
unset FDPDIR HTMLDIR ANONCVS TAG CHUNKS NOCHUNKS PDF TARBALL VERBOSE
unset KEEPON
BUILDS=0

while getopts "m:f:D:a:r:Qcnpthvk" OPT; do
    case $OPT in
	m )
	    WORKDIR="$OPTARG"
	    ;;
	f )
	    FDPDIR="$OPTARG"
	    ;;
	D )
	    TARGETDIR="$OPTARG"
	    ;;
	a )
	    ANONCVS="$OPTARG"
	    ;;
	r )
	    REV="$OPTARG"
	    ;;
	Q )
	    QUIET="-q"
	    ;;
	c )
	    CHUNKS="yes"
	    BUILDS=$(($BUILDS+1))
	    ;;
	n )
	    NOCHUNKS="yes"
	    BUILDS=$(($BUILDS+1))
	    ;;
	p )
	    PDF="yes"  # But PDF doesn't work yet, don't do this!
	    BUILDS=$(($BUILDS+1))
	    ;;
	t )
	    TARBALL="yes"
	    BUILDS=$(($BUILDS+1))
	    ;;
	h )
	    set_vars
	    print_usage
	    exit 0
	    ;;
	v )
	    REDIR="/dev/stdout"
	    ;;
	k )
	    KEEPON="-k"
	    ;;
	* )
	    echo "$MYSELF: invalid option: $OPT"
	    print_usage
	    exit 10
	    ;;
    esac
done
shift $(($OPTIND - 1))


if [ $BUILDS -lt 1 ]; then
    echo "$MYSELF: nothing to do, try selecting one of [-c|-n|-p|-t]"
    exit 20
fi


set_vars
mkdir "${FDPDIR}" || ( echo "Could not mkdir ${FDPDIR}" ; exit 254 )
mkdir -p "${TARGETDIR}" || ( echo "Could not mkdir ${FDPDIR}" ; exit 254 )
pushd "${FDPDIR}" >/dev/null || ( echo "Could not pushd ${FDPDIR}" ; exit 253 )


echo "Checking out docs-common from Fedora Docs CVS"
#cvs -d $ANONCVS login
cvs "$QUIET" -z3 -d $ANONCVS co docs-common

# for DOC in `cat docs-common/bin/active`; do
xargs -n1 echo <docs-common/bin/active |
while read DOC;
do
    DONE=""
    echo "Checking out module $DOC from Fedora Docs CVS"
    cvs "$QUIET" -z3 -d $ANONCVS co $DOC 2>&1 > $REDIR
    pushd "$DOC" >/dev/null || (echo "Couldn't cd to $DOCDIR" ; exit 252 )
    make showvars > tmpvars
    . tmpvars
    rm -f tmpvars
    if [ "$CHUNKS" = "yes" ]; then
	echo "Making chunked HTML for ${DOCBASE}"
	make ${KEEPON} html 2>&1 > $REDIR || ( echo "$MYSELF: CHUNKS failed" ;\
	    exit 251 )
	for LANG in $LANGUAGES ; do
	    DESTDIR="${TARGETDIR}/${DOCBASE}/${LANG}"
	    [ ! -d "$DESTDIR" ] && mkdir -p $DESTDIR
	    cp -r "${DOCBASE}-${LANG}/"* "${DESTDIR}"
	done
    fi
    if [ "$NOCHUNKS" = "yes" ]; then
	echo "Making nochunks HTML for ${DOCBASE}"
	make ${KEEPON} html-nochunks 2>&1 > $REDIR || 
		( echo "$MYSELF: NOCHUNKS failed" ; exit 251 )
	for LANG in $LANGUAGES ; do
	    DESTDIR="${TARGETDIR}/${DOCBASE}/" # add $LANG if desired
	    [ ! -d "$DESTDIR" ] && mkdir -p $DESTDIR
	    cp -r "${DOCBASE}-${LANG}.html" "${DESTDIR}"
	done
    fi
    if [ "$TARBALL" = "yes" ]; then
	echo "Making tarball for ${DOCBASE}"
	make tarball 2>&1 > $REDIR || ( echo "$MYSELF: TARBALL failed" ;\
	    exit 251 )
	for LANG in $LANGUAGES ; do
	    DESTDIR="${TARGETDIR}/${DOCBASE}/" # add $LANG if desired
	    [ ! -d "$DESTDIR" ] && mkdir -p $DESTDIR
	    cp -r "${DOCBASE}-${LANG}.tar.gz" "${DESTDIR}"
	done
    fi

    popd >/dev/null
    
done
    

popd >/dev/null
[ "$FDPDIR" != "/" ] && [ "$FDPDIR" != "$HOME" ] && rm -rf "${FDPDIR}"
exit 0