| #!/bin/bash |
| # |
| # |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| # |
| |
| USERNAME=$1 |
| |
| if [ "${USERNAME}" == "" ]; then |
| echo "Please provide a SVN username." |
| echo -e "\nUsage:\n\t$0 <username>\n" |
| exit 1 |
| fi |
| |
| read -s -p "Password for SVN user ${USERNAME}: " PASSWORD |
| echo |
| |
| SVN_CMD="svn --no-auth-cache --username=${USERNAME} --password=${PASSWORD}" |
| VERSION=$(cat pom.xml | grep -A1 '<artifactId>tinkerpop</artifactId>' | grep '<version>' | awk -F '>' '{print $2}' | awk -F '<' '{print $1}') |
| |
| rm -rf target/svn |
| |
| bin/process-docs.sh || exit 1 |
| |
| # generates javadoc and jsdoc |
| mvn process-resources -Djavadoc |
| |
| mkdir -p target/svn |
| ${SVN_CMD} co --depth immediates https://svn.apache.org/repos/asf/tinkerpop/site target/svn |
| |
| pushd target/svn |
| |
| ${SVN_CMD} update "docs/${VERSION}" |
| ${SVN_CMD} update "javadocs/${VERSION}" |
| ${SVN_CMD} update "jsdocs/${VERSION}" |
| ${SVN_CMD} update "dotnetdocs/${VERSION}" |
| |
| mkdir -p "docs/${VERSION}" |
| mkdir -p "javadocs/${VERSION}/core" |
| mkdir -p "javadocs/${VERSION}/full" |
| mkdir -p "jsdocs/${VERSION}" |
| mkdir -p "dotnetdocs/${VERSION}" |
| |
| mkdir -p ../jsdocs/doc |
| rm -rf ../jsdocs/doc/* |
| cp -R ../../gremlin-javascript/src/main/javascript/gremlin-javascript/doc/ ../jsdocs/doc/ |
| |
| mkdir -p ../dotnetdocs/_site |
| rm -rf ../dotnetdocs/_site/* |
| cp -R ../../gremlin-dotnet/src/_site/ ../dotnetdocs/_site/ |
| |
| # Stage the agent-friendly Markdown mirror + llms.txt (agentdocsspec.com) alongside the HTML, so |
| # each page is reachable at both docs/<version>/<path>.html and .../<path>.md, and the discovery |
| # index is served from the site root at /llms.txt. Copy the whole tree into the HTML output area |
| # before diffing so the existing docs diff/copy/add loop below carries the .md files too. |
| # |
| # Before staging, regenerate the per-version llms.txt (docs/<version>/llms.txt) with ABSOLUTE URLs: |
| # the spec's `llms-txt-links-resolve` / `-links-markdown` checks only recognize full http(s):// URLs |
| # (relative paths are treated as "no links"). The local build's llms.txt intentionally uses relative |
| # links for offline inspection; publishing rewrites them to the canonical site URLs. |
| SITE_DOCS_URL="https://tinkerpop.apache.org/docs" |
| PUBLISH_EXT_CLASSES="../../docs/tinkeradoc-extension/target/classes" |
| if [ -d ../docs/markdown ]; then |
| if [ -d "${PUBLISH_EXT_CLASSES}" ]; then |
| echo "Regenerating per-version llms.txt with absolute URLs..." |
| java -cp "${PUBLISH_EXT_CLASSES}" org.apache.tinkerpop.tinkeradoc.LlmsTxtGenerator \ |
| --prefix "${SITE_DOCS_URL}/${VERSION}/" --out ../docs/markdown/llms.txt ../docs/markdown |
| fi |
| echo "Staging Markdown mirror into htmlsingle for publish..." |
| cp -R ../docs/markdown/. ../docs/htmlsingle/ |
| fi |
| |
| diff -rq -I '^Last updated' docs/${VERSION}/ ../docs/htmlsingle/ | awk -f ../../bin/publish-docs.awk | sed 's/^\(.\) \//\1 /g' > ../publish-docs.docs |
| diff -rq -I 'Generated by javadoc' -I '^<meta name="date"' javadocs/${VERSION}/ ../site/apidocs/ | awk -f ../../bin/publish-docs.awk | sed 's/^\(.\) \//\1 /g' > ../publish-docs.javadocs |
| diff -rq -I 'Generated by jsdoc' -I '^<meta name="date"' jsdocs/${VERSION}/ ../jsdocs/doc/ | awk -f ../../bin/publish-docs.awk | sed 's/^\(.\) \//\1 /g' > ../publish-docs.jsdocs |
| diff -rq -I '^<meta name="generator"' dotnetdocs/${VERSION}/ ../dotnetdocs/_site/ | awk -f ../../bin/publish-docs.awk | sed 's/^\(.\) \//\1 /g' > ../publish-docs.dotnetdocs |
| |
| # copy new / modified files |
| for file in $(cat ../publish-docs.docs | awk '/^[AU]/ {print $2}' | grep -v '.graffle$') |
| do |
| if [ -d "../docs/htmlsingle/${file}" ]; then |
| mkdir -p "docs/${VERSION}/${file}" && cp -r "../docs/htmlsingle/${file}"/* "$_" |
| else |
| mkdir -p "docs/${VERSION}/`dirname ${file}`" && cp "../docs/htmlsingle/${file}" "$_" |
| fi |
| done |
| for file in $(cat ../publish-docs.javadocs | awk '/^[AU]/ {print $2}') |
| do |
| if [ -d "../site/apidocs/${file}" ]; then |
| mkdir -p "javadocs/${VERSION}/${file}" && cp -r "../site/apidocs/${file}"/* "$_" |
| else |
| mkdir -p "javadocs/${VERSION}/`dirname ${file}`" && cp "../site/apidocs/${file}" "$_" |
| fi |
| done |
| for file in $(cat ../publish-docs.jsdocs | awk '/^[AU]/ {print $2}') |
| do |
| if [ -d "../jsdocs/doc/${file}" ]; then |
| mkdir -p "jsdocs/${VERSION}/${file}" && cp -r "../jsdocs/doc/${file}"/* "$_" |
| else |
| mkdir -p "jsdocs/${VERSION}/`dirname ${file}`" && cp "../jsdocs/doc/${file}" "$_" |
| fi |
| done |
| for file in $(cat ../publish-docs.dotnetdocs | awk '/^[AU]/ {print $2}') |
| do |
| if [ -d "../dotnetdocs/_site/${file}" ]; then |
| mkdir -p "dotnetdocs/${VERSION}/${file}" && cp -r "../dotnetdocs/_site/${file}"/* "$_" |
| else |
| mkdir -p "dotnetdocs/${VERSION}/`dirname ${file}`" && cp "../dotnetdocs/_site/${file}" "$_" |
| fi |
| done |
| |
| pushd "docs/${VERSION}/"; cat ../../../publish-docs.docs | awk '/^A/ {print $2}' | grep -v '.graffle$' | xargs --no-run-if-empty svn add --parents; popd |
| pushd "javadocs/${VERSION}/"; cat ../../../publish-docs.javadocs | awk '/^A/ {print $2}' | xargs --no-run-if-empty svn add --parents; popd |
| pushd "jsdocs/${VERSION}/"; cat ../../../publish-docs.jsdocs | awk '/^A/ {print $2}' | xargs --no-run-if-empty svn add --parents; popd |
| pushd "dotnetdocs/${VERSION}/"; cat ../../../publish-docs.dotnetdocs | awk '/^A/ {print $2}' | xargs --no-run-if-empty svn add --parents; popd |
| |
| # delete old files |
| pushd "docs/${VERSION}/"; cat ../../../publish-docs.docs | awk '/^D/ {print $2}' | xargs --no-run-if-empty svn delete; popd |
| pushd "javadocs/${VERSION}/"; cat ../../../publish-docs.javadocs | awk '/^D/ {print $2}' | xargs --no-run-if-empty svn delete; popd |
| pushd "jsdocs/${VERSION}/"; cat ../../../publish-docs.jsdocs | awk '/^D/ {print $2}' | xargs --no-run-if-empty svn delete; popd |
| pushd "dotnetdocs/${VERSION}/"; cat ../../../publish-docs.dotnetdocs | awk '/^D/ {print $2}' | xargs --no-run-if-empty svn delete; popd |
| |
| CHANGES=$(cat ../publish-docs.*docs | grep -v '.graffle$' | wc -l) |
| |
| if [ ${CHANGES} -gt 0 ]; then |
| ${SVN_CMD} commit -m "Deploy docs for TinkerPop ${VERSION}" |
| fi |
| |
| popd |