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")}')