diff --git a/Makefile b/Makefile index dfb5a864f..ac102c601 100644 --- a/Makefile +++ b/Makefile @@ -38,3 +38,15 @@ user-manual-de-pdf: developer-manual-pdf: cd developer_manual && make latexpdf @echo "Developer manual build finished; PDF is updated" + +api-docs: clean-api-docs + mkdir -p developer_manual/api/ + sh get-server-sources.sh master + composer install + php generateApiDoc.php + +clean: clean-api-docs + rm -r admin_manual/_build developer_manual/_build developer_manual/api user_manual/_build user_manual_de_/_build + +clean-api-docs: + rm -fr developer_manual/api/ diff --git a/composer.json b/composer.json new file mode 100644 index 000000000..b0facd795 --- /dev/null +++ b/composer.json @@ -0,0 +1,6 @@ +{ + "minimum-stability": "dev", + "require": { + "juliushaertl/phpdoc-to-rst": "dev-master" + } +} diff --git a/developer_manual/index.rst b/developer_manual/index.rst index b1f5365d0..bdcfc6a12 100644 --- a/developer_manual/index.rst +++ b/developer_manual/index.rst @@ -22,3 +22,4 @@ Table of contents core/index bugtracker/index commun/index + api diff --git a/generateApiDoc.php b/generateApiDoc.php new file mode 100755 index 000000000..956fe40bb --- /dev/null +++ b/generateApiDoc.php @@ -0,0 +1,45 @@ + + * + * @author Julius Härtl + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +/* + * This is a short example on how you can generate the API documentation for Nextcloud + */ + +include __DIR__ . '/vendor/autoload.php'; + +use JuliusHaertl\PHPDocToRst\ApiDocBuilder; + +$nextcloudSource = [ + __DIR__ . '/server/lib/public', + __DIR__ . '/server/lib/private', +]; +$destinationDirectory = __DIR__ . '/developer_manual/api'; + +$apiDocBuilder = new ApiDocBuilder($nextcloudSource, $destinationDirectory); +$apiDocBuilder->setVerboseOutput(true); +$apiDocBuilder->setDebugOutput(true); +$apiDocBuilder->addExtension(\JuliusHaertl\PHPDocToRst\Extension\InterfaceImplementors::class); +$apiDocBuilder->addExtension(\JuliusHaertl\PHPDocToRst\Extension\TocExtension::class); +$apiDocBuilder->addExtension(\JuliusHaertl\PHPDocToRst\Extension\PublicOnlyExtension::class); +$apiDocBuilder->build(); + diff --git a/get-server-sources.sh b/get-server-sources.sh new file mode 100755 index 000000000..667c0574a --- /dev/null +++ b/get-server-sources.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# +# Clone Nextcloud server repo into $CWD/server +# if it already exists the latest commits from +# the specified branch will be fetched + +NC_BRANCH="${1:-master}" + +if [ -d server/.git ]; then + cd server && git fetch && git checkout $NC_BRANCH && git reset --hard origin/$NC_BRANCH +else + git clone https://github.com/nextcloud/server server +fi;