introduce @OPNFVDOCS_PATH@ and @PROJECT_PATH@
[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 "copper"
27     echo "doctor"
28     echo "fastpathmetrics"
29     echo "fuel"
30     echo "functest"
31     echo "ipv6"
32     echo "joid"
33     echo "promise"
34     echo "sdnvpn"
35     echo "vswitchperf"
36 }
37
38 git_clone() {
39     _repo="$1"
40
41     [[ -d "$WORKSPACE/$_repo" ]] && return 0
42     pushd $WORKSPACE
43     git clone -b $GERRIT_BRANCH --depth 1 --quiet $GIT_CLONE_BASE/$_repo
44     popd
45 }
46
47 git_clone releng
48
49 repos=$(get_repo_names)
50
51 [[ -e docs/projects ]] && rm -rf docs/projects
52 mkdir -p docs/projects
53
54 echo
55 echo "Cloning repos of participating OPNFV Projects and copying docs"
56 echo
57 for repo in $repos; do
58     echo "    $repo ($GERRIT_BRANCH)"
59     git_clone $repo
60     [[ -e $WORKSPACE/$repo/docs ]] || continue
61     [[ -e docs/projects/$repo ]] && rm -rf docs/projects/$repo
62     cp -r $WORKSPACE/$repo/docs docs/projects/$repo
63
64     # Replace PATH variables by source file folder paths.
65     # Note: Editors can recognize as follows:
66     #   * @PROJECT_PATH@ is pointer to the project folder
67     #     'opnfvdocs/docs/projects/<project name>'.
68     #   * @OPNFVDOCS_PATH@ is pointer to the main folder 'opnfvdocs/docs'.
69     # Note: 'docs_build/_src' is the folder in which all document contents
70     #       will be copied during docs build process.
71     find docs/projects/$repo -type f -name '*.rst' -print | \
72     xargs -I f sed -i \
73     -e "s|@PROJECT_PATH@|docs_build/_src/projects/$repo|" \
74     -e "s|@OPNFVDOCS_PATH@|docs_build/_src|" f
75 done
76
77 # NOTE: Removing index.rst in project repos to reduce number of docs.
78 find docs/projects -type f -name 'index.rst' -print | xargs -I i rm -f i
79
80 # NOTE: automated link generation is not ready...
81 echo
82 echo "Creating document links"
83 echo
84 targets="
85 configguide/installer-config.rst
86 configguide/feature-config.rst
87 userguide/test-usage.rst
88 userguide/feature-usage.rst
89 "
90 # configguide/post-install.rst
91 for guide in $targets
92 do
93     mainfile="$WORKSPACE/docs/$guide"
94     basefilename=$(basename ${guide/-/})
95     for repo in $repos
96     do
97         targetfile="$WORKSPACE/docs/projects/$repo/${guide/-/}"
98         targetlink="../projects/$repo/${guide/-/}"
99         projectfilename="${basefilename/.rst/-$repo.rst}"
100         projectfile="$(dirname $mainfile)/$projectfilename"
101         [[ -e "$targetfile" ]] || continue
102         echo "Adding $repo to $guide ..."
103         echo "" >> $mainfile
104         echo ".. toctree::" >> $mainfile
105         echo "" >> $mainfile
106         echo "    $projectfilename" >> $mainfile
107         echo ".. include:: $targetlink" > $projectfile
108     done
109     echo
110     echo "Generated $guide:"
111     cat $mainfile
112     echo
113 done
114
115 $WORKSPACE/releng/utils/docs-build.sh
116
117 echo "Done"