#!/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 ############################################################################## GIT_CLONE_BASE=${GIT_CLONE_BASE:-ssh://gerrit.opnfv.org:29418} GERRIT_BRANCH=${GERRIT_BRANCH:-master} WORKSPACE=${WORKSPACE:-.} 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 "bottlenecks" echo "compass4nfv" echo "copper" echo "daisy" echo "doctor" echo "fastpathmetrics" echo "fuel" echo "functest" echo "ipv6" echo "joid" echo "ovsnfv" echo "pharos" echo "prediction" echo "promise" echo "sdnvpn" echo "vswitchperf" echo "yardstick" } git_clone() { _repo="$1" [[ -d "$WORKSPACE/$_repo" ]] && return 0 pushd $WORKSPACE git clone -b $GERRIT_BRANCH --depth 1 --quiet $GIT_CLONE_BASE/$_repo popd } 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=" configurationguide/configuration.options.render.rst configurationguide/scenario.description.rst userguide/feature.userguide.render.rst testframework/framework.installation.procedure.render.rst testframework/framework.userguide.render.rst " # configurationguide/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