48bcda061339b3c2d7a00f97d903246fbf13890f
[opnfvdocs.git] / build-composite.sh
1 #!/bin/bash
2 # SPDX-license-identifier: Apache-2.0
3 ##############################################################################
4 # Copyright (c) 2016 NEC and others.
5 # All rights reserved. This program and the accompanying materials
6 # are made available under the terms of the Apache License, Version 2.0
7 # which accompanies this distribution, and is available at
8 # http://www.apache.org/licenses/LICENSE-2.0
9 ##############################################################################
10
11 set -o errexit
12 set -o nounset
13 set -o pipefail
14 set -o xtrace
15
16 GIT_CLONE_BASE=${GIT_CLONE_BASE:-ssh://gerrit.opnfv.org:29418}
17 GERRIT_BRANCH=${GERRIT_BRANCH:-master}
18 WORKSPACE=${WORKSPACE:-/tmp}
19
20 get_repo_names() {
21     # NOTE: Not all repositories are ready for the composite docs,
22     #       so we have the repo name list here to add project docs
23     #       one by one. This will be replaced by the list in project.cfg .
24     # grep -v '^#' releng/jjb/opnfvdocs/project.cfg | sort
25     echo "apex"
26     echo "bottlenecks"
27     echo "compass4nfv"
28     echo "copper"
29     echo "doctor"
30     echo "fastpathmetrics"
31     echo "fuel"
32     echo "functest"
33     echo "ipv6"
34     echo "joid"
35     echo "ovsnfv"
36     echo "pharos"
37     echo "prediction"
38     echo "promise"
39     echo "sdnvpn"
40     echo "vswitchperf"
41     echo "yardstick"
42 }
43
44 git_clone() {
45     _repo="$1"
46
47     [[ -d "$WORKSPACE/$_repo" ]] && return 0
48     pushd $WORKSPACE
49     git clone -b $GERRIT_BRANCH --depth 1 --quiet $GIT_CLONE_BASE/$_repo
50     popd
51 }
52
53 repos=$(get_repo_names)
54
55 [[ -e docs/projects ]] && rm -rf docs/projects
56 mkdir -p docs/projects
57
58 echo
59 echo "Cloning repos of participating OPNFV Projects and copying docs"
60 echo
61 for repo in $repos; do
62     echo "    $repo ($GERRIT_BRANCH)"
63     git_clone $repo
64     [[ -e $WORKSPACE/$repo/docs ]] || continue
65     [[ -e docs/projects/$repo ]] && rm -rf docs/projects/$repo
66     cp -r $WORKSPACE/$repo/docs docs/projects/$repo
67 done
68
69 # NOTE: Removing index.rst in project repos to reduce number of docs.
70 find docs/projects -type f -name 'index.rst' -print | xargs -I i rm -f i
71
72 # fix relative file paths
73 pattern='.. \(include\|figure\):: *[^ \/]'
74 base_path="/$(pwd)/docs_build/_src"
75 find docs/projects -type f -name '*.rst' -print | while read f
76 do
77     sed -i -e "/$pattern/s|:: *|:: $base_path/$(dirname ${f#docs/})/|" $f
78 done
79
80 # for debug
81 grep -e '.. include::' -e '.. figure::' -r docs/projects
82
83 # NOTE: automated link generation is not ready...
84 echo
85 echo "Creating document links"
86 echo
87 targets="
88 configurationguide/configuration.options.render.rst
89 configurationguide/scenario.description.rst
90 userguide/feature.userguide.render.rst
91 testframework/framework.installation.procedure.render.rst
92 testframework/framework.userguide.render.rst
93 "
94 # configurationguide/post-install.rst
95 for guide in $targets
96 do
97     mainfile="$WORKSPACE/docs/$guide"
98     basefilename=$(basename ${guide/-/})
99     for repo in $repos
100     do
101         targetfile="$WORKSPACE/docs/projects/$repo/${guide/-/}"
102         targetlink="../projects/$repo/${guide/-/}"
103         projectfilename="${basefilename/.rst/-$repo.rst}"
104         projectfile="$(dirname $mainfile)/$projectfilename"
105         [[ -e "$targetfile" ]] || continue
106         echo "Adding $repo to $guide ..."
107         echo "" >> $mainfile
108         echo ".. toctree::" >> $mainfile
109         echo "" >> $mainfile
110         echo "    $projectfilename" >> $mainfile
111         echo ".. include:: $targetlink" > $projectfile
112     done
113     echo
114     echo "Generated $guide:"
115     cat $mainfile
116     echo
117 done
118
119 OPNFVDOCS_DIR=. ./scripts/docs-build.sh
120
121 echo "Done"