Skip to content

Commit

Permalink
feat(issue-3): create continuous documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
Robso-creator committed Feb 2, 2024
1 parent 592a9e5 commit 61586bd
Show file tree
Hide file tree
Showing 6 changed files with 132 additions and 3 deletions.
5 changes: 3 additions & 2 deletions .github/workflows/documentation_deploy.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: documentation_deploy
on:
push:
branches:
- main
# branches:
# - main
jobs:
deploy:
runs-on: ubuntu-latest
Expand All @@ -13,4 +13,5 @@ jobs:
python-version: 3.x
- run: pip install mkdocs
- run: pip install mkdocs-material
- run: make local_doc
- run: mkdocs gh-deploy --force --clean --verbose
12 changes: 12 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,15 @@ up:

test:
python3 -m pytest

local_doc:
@echo 'RUNNING DOCUMENTATION SCRIPTS'
@for script in ./src/continuous_documentation/*.py; do \
echo 'Running script:' $$script; \
python3 -m src.continuous_documentation."$$(basename "$$script" .py)"; \
done


build_doc:
mkdocs build
mkdocs serve
41 changes: 41 additions & 0 deletions docs/commands.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Documentação dos comandos do Bot

Esta documentação fornece informações detalhadas sobre os comandos disponíveis no Bot Discord.
Em vez de depender de um README estático, esta documentação é construída automáticamente no deploy
usando código Python.
Isso nos permite manter a dinamicidade do mapeamento dos comandos, garantindo que
as informações estejam sempre atualizadas.

> Para visualizar o código responsável por gerar esta documentação dinâmica,
> clique [aqui](../src/continuous_documentation/commands_documentation.py)
## Informações sobre os comandos

Hoje temos **2** comandos.

Mostramos na tabela abaixo quais são eles e suas informações de forma sintetizada.

ID |Nome do Comando| Descrição | Aceita Parametros |
---|---------------|-----------|-------------------|
1 | [hello](#hello) | teste de descrição | ❌
2 | [help](#help) | teste de descrição | ✅


## Comandos de forma detalhada

### hello
- Descrição: teste de descrição

**Parâmetros**:


___
### help
- Descrição: teste de descrição

**Parâmetros**:

- Nome: command;
- Descrição: comando que o usuário precisa de mais detalhes;
- Obrigatório: ❌.
___
Empty file.
75 changes: 75 additions & 0 deletions src/continuous_documentation/commands_documentation.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
from src.main import bot
from src.main import server_id

string_template = """# Documentação dos comandos do Bot
Esta documentação fornece informações detalhadas sobre os comandos disponíveis no Bot Discord.
Em vez de depender de um README estático, esta documentação é construída automáticamente no deploy
usando código Python.
Isso nos permite manter a dinamicidade do mapeamento dos comandos, garantindo que
as informações estejam sempre atualizadas.
> Para visualizar o código responsável por gerar esta documentação dinâmica,
> clique [aqui](../src/continuous_documentation/commands_documentation.py)
## Informações sobre os comandos
Hoje temos **{COMMANDS_COUNT}** comandos.
Mostramos na tabela abaixo quais são eles e suas informações de forma sintetizada.
ID |Nome do Comando| Descrição | Aceita Parametros |
---|---------------|-----------|-------------------|
{COMMANDS_TABLE}
## Comandos de forma detalhada
{COMMANDS_DETAILED}
"""


def docs_dags_self_documentation():
final_path = './docs/commands.md'

with open(final_path, 'w') as file:
all_commands = [
_command for _command in bot.tree.walk_commands(guild=server_id)
]
commands_count = len(all_commands)
commands_table = ''
commands_detailed = ''
for e, command in enumerate(all_commands, 1):
dict_command = command.to_dict()
accept_commands = '✅' if len(dict_command['options']) > 0 else '❌'
command_name = dict_command['name']
command_description = dict_command['description']

_command_table = f'{e} | [{command_name}](#{command_name}) | {command_description} | {accept_commands}\n'
commands_table += _command_table

params = '**Parâmetros**:\n\n'
for param in dict_command['options']:
param_name = param['name']
param_description = param['description']
param_required = '❌' if param['required'] is False else '✅'

if len(dict_command['options']) > 0:
params += (
f'- Nome: {param_name};\n- Descrição: {param_description};\n- Obrigatório: {param_required}.'
)

_command_detail = f'### {command_name}\n - Descrição: {command_description}\n\n{params}'
commands_detailed += _command_detail
commands_detailed += '\n___\n' # horizontal line

commands_documentation = string_template.format(
COMMANDS_COUNT=commands_count,
COMMANDS_TABLE=commands_table,
COMMANDS_DETAILED=commands_detailed,
)
file.write(commands_documentation)


if __name__ == '__main__':
docs_dags_self_documentation()
2 changes: 1 addition & 1 deletion src/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ async def hello(interaction: discord.Interaction):


@bot.tree.command(name='help', guild=server_id, description='teste de descrição')
@app_commands.describe(command='comando que precisa de mais detalhes')
@app_commands.describe(command='comando que o usuário precisa de mais detalhes')
async def help(interaction: discord.Interaction, command: Optional[str] = None):
if command is None:
embed = discord.Embed(
Expand Down

0 comments on commit 61586bd

Please sign in to comment.