[setup] Added build documentation target

This commit is contained in:
Ferdinand Thiessen 2021-03-25 13:12:28 +01:00
parent da94acf18c
commit 114e12f151
3 changed files with 40 additions and 12 deletions

1
.gitignore vendored
View File

@ -67,6 +67,7 @@ instance/
# Sphinx documentation # Sphinx documentation
docs/_build/ docs/_build/
docs/
# PyBuilder # PyBuilder
target/ target/

View File

@ -17,7 +17,7 @@ class PrefixMiddleware(object):
def __call__(self, environ, start_response): def __call__(self, environ, start_response):
if environ["PATH_INFO"].startswith(self.prefix): if environ["PATH_INFO"].startswith(self.prefix):
environ["PATH_INFO"] = environ["PATH_INFO"][len(self.prefix) :] environ["PATH_INFO"] = environ["PATH_INFO"][len(self.prefix):]
environ["SCRIPT_NAME"] = self.prefix environ["SCRIPT_NAME"] = self.prefix
return self.app(environ, start_response) return self.app(environ, start_response)
else: else:
@ -83,19 +83,19 @@ class InterfaceGenerator:
import typing import typing
if ( if (
inspect.ismodule(module[1]) inspect.ismodule(module[1])
and module[1].__name__.startswith(self.basename) and module[1].__name__.startswith(self.basename)
and module[1].__name__ not in self.known and module[1].__name__ not in self.known
): ):
self.known.append(module[1].__name__) self.known.append(module[1].__name__)
for cls in inspect.getmembers(module[1], lambda x: inspect.isclass(x) or inspect.ismodule(x)): for cls in inspect.getmembers(module[1], lambda x: inspect.isclass(x) or inspect.ismodule(x)):
self.walker(cls) self.walker(cls)
elif ( elif (
inspect.isclass(module[1]) inspect.isclass(module[1])
and module[1].__module__.startswith(self.basename) and module[1].__module__.startswith(self.basename)
and module[0] not in self.classes and module[0] not in self.classes
and not module[0].startswith("_") and not module[0].startswith("_")
and hasattr(module[1], "__annotations__") and hasattr(module[1], "__annotations__")
): ):
self.this_type = module[0] self.this_type = module[0]
print("\n\n" + module[0] + "\n") print("\n\n" + module[0] + "\n")

View File

@ -1,11 +1,35 @@
from setuptools import setup, find_packages from setuptools import setup, find_packages, Command
import subprocess
import os import os
mysql_driver = "PyMySQL" if os.name == "nt" else "mysqlclient" mysql_driver = "PyMySQL" if os.name == "nt" else "mysqlclient"
class DocsCommand(Command):
description = "Generate and export API documentation"
user_options = [
# The format is (long option, short option, description).
("output=", "o", "Documentation output path"),
]
def initialize_options(self):
self.output = "./docs"
def finalize_options(self):
pass
def run(self):
"""Run command."""
command = ["python", "-m", "pdoc", "--skip-errors", "--html", "--output-dir", self.output, "flaschengeist"]
self.announce(
"Running command: %s" % str(command),
)
subprocess.check_call(command)
setup( setup(
name="flaschengeist", name="flaschengeist",
version="2.0.0-dev", version="2.0.0.dev0",
url="https://wu5.de/redmine/projects/geruecht", url="https://wu5.de/redmine/projects/geruecht",
author="WU5 + Friends", author="WU5 + Friends",
author_email="tim@groeger-clan.de", author_email="tim@groeger-clan.de",
@ -23,7 +47,7 @@ setup(
"werkzeug", "werkzeug",
mysql_driver, mysql_driver,
], ],
extras_require={"ldap": ["flask_ldapconn", "ldap3"], "pricelist": ["pillow"],"test": ["pytest", "coverage"]}, extras_require={"ldap": ["flask_ldapconn", "ldap3"], "pricelist": ["pillow"], "test": ["pytest", "coverage"]},
entry_points={ entry_points={
"flaschengeist.plugin": [ "flaschengeist.plugin": [
# Authentication providers # Authentication providers
@ -39,4 +63,7 @@ setup(
"pricelist = flaschengeist.plugins.pricelist:PriceListPlugin [pricelist]", "pricelist = flaschengeist.plugins.pricelist:PriceListPlugin [pricelist]",
], ],
}, },
cmdclass={
"docs": DocsCommand,
},
) )