75 lines
2.0 KiB
Python
Executable File
75 lines
2.0 KiB
Python
Executable File
from pathlib import Path
|
|
|
|
import click
|
|
from io import StringIO
|
|
import sys
|
|
from iottb import DOCS_FOLDER
|
|
# Import your CLI app here
|
|
from iottb.main import cli
|
|
|
|
"""Script to generate the help text and write to file.
|
|
|
|
Definitely needs better formatting.
|
|
Script is also not very flexible.
|
|
"""
|
|
|
|
|
|
def get_help_text(command):
|
|
"""Get the help text for a given command."""
|
|
help_text = StringIO()
|
|
with click.Context(command) as ctx:
|
|
# chatgpt says this helps: was right
|
|
sys_stdout = sys.stdout
|
|
sys.stdout = help_text
|
|
try:
|
|
click.echo(command.get_help(ctx))
|
|
finally:
|
|
sys.stdout = sys_stdout
|
|
return help_text.getvalue()
|
|
|
|
|
|
def write_help_to_file(cli, filename):
|
|
"""Write help messages of all commands and subcommands to a file."""
|
|
with open(filename, 'w+') as f:
|
|
# main
|
|
f.write(f"Main Command: iottb\n")
|
|
f.write(get_help_text(cli))
|
|
f.write("\n\n")
|
|
|
|
# go through subcommands
|
|
for cmd_name, cmd in cli.commands.items():
|
|
f.write(f"Command: {cmd_name}\n")
|
|
f.write(get_help_text(cmd))
|
|
f.write("\n\n")
|
|
|
|
# subcommands of subcommands
|
|
if isinstance(cmd, click.Group):
|
|
for sub_cmd_name, sub_cmd in cmd.commands.items():
|
|
f.write(f"Subcommand: {cmd_name} {sub_cmd_name}\n")
|
|
f.write(get_help_text(sub_cmd))
|
|
f.write("\n\n")
|
|
|
|
|
|
def manual():
|
|
comands = [
|
|
'init-db',
|
|
'add-device',
|
|
'sniff'
|
|
]
|
|
dev_commands = [
|
|
'show-all',
|
|
'rm-dbs',
|
|
'show-cfg',
|
|
'show-all'
|
|
]
|
|
|
|
|
|
if __name__ == "__main__":
|
|
from iottb import DOCS_FOLDER
|
|
|
|
print('Must be in project root for this to work properly!')
|
|
print(f'CWD is {str(Path.cwd())}')
|
|
DOCS_FOLDER.mkdir(exist_ok=True)
|
|
write_help_to_file(cli, str(DOCS_FOLDER / "help_messages.md"))
|
|
print(f'Wrote help_messages.md to {str(DOCS_FOLDER / "help_messages.md")}')
|