mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-23 19:44:20 +00:00
Add microdocumentation generator
This commit is contained in:
parent
88320bbf7a
commit
b5f4f17103
7 changed files with 120 additions and 31 deletions
|
@ -24,29 +24,5 @@
|
|||
<option name="ITERATION_ELEMENTS_WRAPPING" value="chop_down_if_not_single" />
|
||||
</formatting-settings>
|
||||
</DBN-SQL>
|
||||
<DBN-PSQL>
|
||||
<case-options enabled="true">
|
||||
<option name="KEYWORD_CASE" value="lower" />
|
||||
<option name="FUNCTION_CASE" value="lower" />
|
||||
<option name="PARAMETER_CASE" value="lower" />
|
||||
<option name="DATATYPE_CASE" value="lower" />
|
||||
<option name="OBJECT_CASE" value="preserve" />
|
||||
</case-options>
|
||||
<formatting-settings enabled="false" />
|
||||
</DBN-PSQL>
|
||||
<DBN-SQL>
|
||||
<case-options enabled="true">
|
||||
<option name="KEYWORD_CASE" value="lower" />
|
||||
<option name="FUNCTION_CASE" value="lower" />
|
||||
<option name="PARAMETER_CASE" value="lower" />
|
||||
<option name="DATATYPE_CASE" value="lower" />
|
||||
<option name="OBJECT_CASE" value="preserve" />
|
||||
</case-options>
|
||||
<formatting-settings enabled="false">
|
||||
<option name="STATEMENT_SPACING" value="one_line" />
|
||||
<option name="CLAUSE_CHOP_DOWN" value="chop_down_if_statement_long" />
|
||||
<option name="ITERATION_ELEMENTS_WRAPPING" value="chop_down_if_not_single" />
|
||||
</formatting-settings>
|
||||
</DBN-SQL>
|
||||
</code_scheme>
|
||||
</component>
|
|
@ -9,7 +9,7 @@
|
|||
<excludeFolder url="file://$MODULE_DIR$/docs" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/royalnet.egg-info" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="Python 3.8 (royalnet-1MWM6-kd-py3.8)" jdkType="Python SDK" />
|
||||
<orderEntry type="jdk" jdkName="Python 3.8 (royalnet-Yo3bJ6Dg-py3.8)" jdkType="Python SDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
<component name="TestRunnerService">
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
[tool.poetry]
|
||||
name = "royalnet"
|
||||
version = "5.1.5"
|
||||
version = "5.1.6"
|
||||
description = "A multipurpose bot and web framework"
|
||||
authors = ["Stefano Pigozzi <ste.pigozzi@gmail.com>"]
|
||||
license = "AGPL-3.0+"
|
||||
|
|
|
@ -17,7 +17,7 @@ log = logging.getLogger(__name__)
|
|||
|
||||
|
||||
@click.command()
|
||||
@click.option("-c", "--config-filename", default="./config.toml", type=str,
|
||||
@click.option("-c", "--config-filename", default="./config.toml", type=click.Path(exists=True),
|
||||
help="The filename of the Royalnet configuration file.")
|
||||
def run(config_filename: str):
|
||||
# Read the configuration file
|
||||
|
|
|
@ -2,14 +2,11 @@ import royalnet
|
|||
from starlette.requests import Request
|
||||
from starlette.responses import *
|
||||
from royalnet.constellation import PageStar
|
||||
from ..tables import available_tables
|
||||
|
||||
|
||||
class ApiRoyalnetVersionStar(PageStar):
|
||||
path = "/api/royalnet/version"
|
||||
|
||||
tables = set(available_tables)
|
||||
|
||||
async def page(self, request: Request) -> JSONResponse:
|
||||
return JSONResponse({
|
||||
"version": {
|
||||
|
|
116
royalnet/generate.py
Normal file
116
royalnet/generate.py
Normal file
|
@ -0,0 +1,116 @@
|
|||
import toml
|
||||
import importlib
|
||||
import click
|
||||
|
||||
p = click.echo
|
||||
|
||||
|
||||
@click.command()
|
||||
@click.option("-c", "--config-filename", default="./config.toml", type=click.Path(exists=True),
|
||||
help="The filename of the Royalnet configuration file.")
|
||||
@click.option("-f", "--file-format", type=str, help="The name of the format that should be generated.")
|
||||
def run(config_filename, file_format):
|
||||
with open(config_filename, "r") as t:
|
||||
config: dict = toml.load(t)
|
||||
|
||||
# Import packs
|
||||
packs_cfg = config["Packs"]
|
||||
pack_names = packs_cfg["active"]
|
||||
packs = {}
|
||||
for pack_name in pack_names:
|
||||
try:
|
||||
packs[pack_name] = importlib.import_module(pack_name)
|
||||
except ImportError as e:
|
||||
p(f"Skipping `{pack_name}`: {e}", err=True)
|
||||
continue
|
||||
|
||||
if file_format == "botfather":
|
||||
for pack_name in packs:
|
||||
pack = packs[pack_name]
|
||||
lines = []
|
||||
|
||||
try:
|
||||
commands = pack.available_commands
|
||||
except AttributeError:
|
||||
p(f"Pack `{pack}` does not have the `available_commands` attribute.", err=True)
|
||||
continue
|
||||
for command in commands:
|
||||
lines.append(f"{command.name} - {command.description}")
|
||||
|
||||
lines.sort()
|
||||
for line in lines:
|
||||
p(line)
|
||||
|
||||
elif file_format == "markdown":
|
||||
for pack_name in packs:
|
||||
pack = packs[pack_name]
|
||||
p(f"# {pack_name}")
|
||||
p("")
|
||||
|
||||
try:
|
||||
commands = pack.available_commands
|
||||
except AttributeError:
|
||||
p(f"Pack `{pack}` does not have the `available_commands` attribute.", err=True)
|
||||
else:
|
||||
p(f"## Commands")
|
||||
p("")
|
||||
for command in commands:
|
||||
p(f"### `{command.name}`")
|
||||
p("")
|
||||
p(f"{command.description}")
|
||||
p("")
|
||||
if len(command.aliases) > 0:
|
||||
p(f"> Aliases: {''.join(['`' + alias + '` ' for alias in command.aliases])}")
|
||||
p("")
|
||||
|
||||
try:
|
||||
events = pack.available_events
|
||||
except AttributeError:
|
||||
p(f"Pack `{pack}` does not have the `available_events` attribute.", err=True)
|
||||
else:
|
||||
p(f"## Events")
|
||||
p("")
|
||||
for event in events:
|
||||
p(f"### `{event.name}`")
|
||||
p("")
|
||||
|
||||
try:
|
||||
page_stars = pack.available_page_stars
|
||||
except AttributeError:
|
||||
p(f"Pack `{pack}` does not have the `available_page_stars` attribute.", err=True)
|
||||
else:
|
||||
p(f"## Page Stars")
|
||||
p("")
|
||||
for page_star in page_stars:
|
||||
p(f"### `{page_star.path}`")
|
||||
p("")
|
||||
|
||||
try:
|
||||
exc_stars = pack.available_exception_stars
|
||||
except AttributeError:
|
||||
p(f"Pack `{pack}` does not have the `available_exception_stars` attribute.", err=True)
|
||||
else:
|
||||
p(f"## Exception Stars")
|
||||
p("")
|
||||
for exc_star in exc_stars:
|
||||
p(f"### `{exc_star.error}`")
|
||||
p("")
|
||||
|
||||
try:
|
||||
tables = pack.available_tables
|
||||
except AttributeError:
|
||||
p(f"Pack `{pack}` does not have the `available_tables` attribute.", err=True)
|
||||
else:
|
||||
p(f"## Tables")
|
||||
p("")
|
||||
for table in tables:
|
||||
p(f"### `{table.__tablename__}`")
|
||||
p("")
|
||||
# TODO: list columns
|
||||
|
||||
else:
|
||||
raise click.ClickException("Unknown format")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
run()
|
|
@ -1 +1 @@
|
|||
semantic = "5.1.5"
|
||||
semantic = "5.1.6"
|
||||
|
|
Loading…
Reference in a new issue