#!/bin/bash # SPDX-license-identifier: Apache-2.0 ############################################################################## # Copyright (c) 2016 NEC and others. # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## set -o errexit set -o nounset set -o pipefail set -o xtrace GIT_CLONE_BASE=${GIT_CLONE_BASE:-ssh://gerrit.opnfv.org:29418} GERRIT_BRANCH=${GERRIT_BRANCH:-master} WORKSPACE=${WORKSPACE:-/tmp} get_repo_names() { # NOTE: Not all repositories are ready for the composite docs, # so we have the repo name list here to add project docs # one by one. This will be replaced by the list in project.cfg . # grep -v '^#' releng/jjb/opnfvdocs/project.cfg | sort echo "apex" echo "copper" echo "doctor" echo "fastpathmetrics" echo "fuel" echo "functest" echo "ipv6" echo "joid" echo "promise" echo "sdnvpn" echo "vswitchperf" echo "ovsnfv" echo "compass4nfv" } git_clone() { _repo="$1" [[ -d "$WORKSPACE/$_repo" ]] && return 0 pushd $WORKSPACE git clone -b $GERRIT_BRANCH --depth 1 --quiet $GIT_CLONE_BASE/$_repo popd } git_clone releng repos=$(get_repo_names) [[ -e docs/projects ]] && rm -rf docs/projects mkdir -p docs/projects echo echo "Cloning repos of participating OPNFV Projects and copying docs" echo for repo in $repos; do echo " $repo ($GERRIT_BRANCH)" git_clone $repo [[ -e $WORKSPACE/$repo/docs ]] || continue [[ -e docs/projects/$repo ]] && rm -rf docs/projects/$repo cp -r $WORKSPACE/$repo/docs docs/projects/$repo done # NOTE: Removing index.rst in project repos to reduce number of docs. find docs/projects -type f -name 'index.rst' -print | xargs -I i rm -f i # fix relative file paths pattern='.. \(include\|figure\):: *[^ \/]' base_path="/$(pwd)/docs_build/_src" find docs/projects -type f -name '*.rst' -print | while read f do sed -i -e "/$pattern/s|:: *|:: $base_path/$(dirname ${f#docs/})/|" $f done # for debug grep -e '.. include::' -e '.. figure::' -r docs/projects # NOTE: automated link generation is not ready... echo echo "Creating document links" echo targets=" configguide/installer-config.rst configguide/feature-config.rst userguide/test-usage.rst userguide/feature-usage.rst " # configguide/post-install.rst for guide in $targets do mainfile="$WORKSPACE/docs/$guide" basefilename=$(basename ${guide/-/}) for repo in $repos do targetfile="$WORKSPACE/docs/projects/$repo/${guide/-/}" targetlink="../projects/$repo/${guide/-/}" projectfilename="${basefilename/.rst/-$repo.rst}" projectfile="$(dirname $mainfile)/$projectfilename" [[ -e "$targetfile" ]] || continue echo "Adding $repo to $guide ..." echo "" >> $mainfile echo ".. toctree::" >> $mainfile echo "" >> $mainfile echo " $projectfilename" >> $mainfile echo ".. include:: $targetlink" > $projectfile done echo echo "Generated $guide:" cat $mainfile echo done $WORKSPACE/releng/utils/docs-build.sh echo "Done"