Skip to content

fix(ci): evitar erro de config no workflow de geração - #3

Open
pedromendes-dev wants to merge 1 commit into
vinimlo:mainfrom
pedromendes-dev:ci/fix-workflow-demo-config
Open

fix(ci): evitar erro de config no workflow de geração#3
pedromendes-dev wants to merge 1 commit into
vinimlo:mainfrom
pedromendes-dev:ci/fix-workflow-demo-config

Conversation

@pedromendes-dev

@pedromendes-dev pedromendes-dev commented Feb 25, 2026

Copy link
Copy Markdown

Resumo

  • Corrige falha no modo demo quando config.example.yml não existe
  • Faz fallback para config.yml em generator/main.py
  • Usa comando explícito no workflow: python -m generator.main generate --demo

Validação

  • Execução local do comando do CI concluída com sucesso
  • Workflow executado no fork com conclusão success

@gemini-code-assist

Copy link
Copy Markdown

Summary of Changes

Hello @pedromendes-dev, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

Este pull request aprimora a resiliência do script de geração ao carregar arquivos de configuração, especialmente no modo de demonstração. Anteriormente, o modo demo falharia se o arquivo config.example.yml estivesse ausente. Agora, ele tentará carregar config.yml como alternativa, garantindo que o processo de geração possa continuar mesmo com uma configuração ligeiramente diferente. Além disso, a documentação do argumento --demo foi atualizada para refletir essa nova flexibilidade.

Highlights

  • Fallback de Configuração no Modo Demo: Implementado um mecanismo de fallback para o modo demo, permitindo que o gerador utilize config.yml se config.example.yml não for encontrado, aumentando a robustez do processo.
  • Mensagens de Erro e Informação Aprimoradas: Atualizadas as mensagens de erro para o carregamento de configuração e adicionada uma mensagem informativa quando o fallback para config.yml ocorre no modo demo.
  • Documentação do Argumento --demo: A mensagem de ajuda para o argumento --demo foi atualizada para refletir o novo comportamento de fallback, indicando que config.example.yml ou config.yml podem ser usados.
Changelog
  • generator/main.py
    • Adicionado um mecanismo de fallback para o modo demo, permitindo o uso de config.yml se config.example.yml não estiver presente.
    • Atualizada a mensagem de erro para o modo demo quando nenhum arquivo de configuração é encontrado.
    • Especificada a codificação UTF-8 ao abrir arquivos de configuração.
    • Modificada a descrição de ajuda para o argumento --demo para incluir a opção de fallback para config.yml.
Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/generate-profile.yml
Activity
  • Nenhuma atividade de revisão ou comentários foi registrada neste pull request até o momento.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

Este pull request melhora a robustez do modo de demonstração (--demo) ao permitir um fallback para config.yml se config.example.yml não for encontrado. A lógica de carregamento de configuração foi refatorada para ser mais clara e as mensagens de ajuda foram atualizadas para refletir essa mudança. Adicionalmente, a especificação explícita de encoding='utf-8' ao abrir o arquivo de configuração é uma boa prática que evita possíveis problemas de codificação em diferentes sistemas.

Minha única sugestão é modernizar o tratamento de caminhos de arquivo usando o módulo pathlib, que pode tornar o código um pouco mais legível e conciso.

Comment thread generator/main.py
Comment on lines +41 to +62
root_dir = os.path.join(os.path.dirname(__file__), "..")
if demo:
config_path = os.path.join(os.path.dirname(__file__), "..", "config.example.yml")
config_candidates = [
os.path.join(root_dir, "config.example.yml"),
os.path.join(root_dir, "config.yml"),
]
else:
config_path = os.path.join(os.path.dirname(__file__), "..", "config.yml")
config_candidates = [os.path.join(root_dir, "config.yml")]

try:
with open(config_path, "r") as f:
config = yaml.safe_load(f)
except FileNotFoundError:
config_path = next((path for path in config_candidates if os.path.exists(path)), None)
if config_path is None:
if demo:
logger.error("config.example.yml not found.")
logger.error("Neither config.example.yml nor config.yml was found.")
else:
logger.error("config.yml not found. Copy config.example.yml to config.yml and edit it.")
sys.exit(1)

if demo and config_path.endswith("config.yml"):
logger.info("Demo mode: config.example.yml not found, falling back to config.yml.")

with open(config_path, "r", encoding="utf-8") as f:
config = yaml.safe_load(f)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Para melhorar a legibilidade e modernizar o código, você poderia considerar o uso do módulo pathlib para manipulação de caminhos de arquivo. Ele oferece uma API orientada a objetos que é geralmente mais intuitiva do que os.path.

Isso tornaria a definição de root_dir, a construção de caminhos candidatos e as verificações de existência um pouco mais limpas.

Não se esqueça de adicionar from pathlib import Path no início do arquivo.

    root_dir = Path(__file__).parent.parent
    if demo:
        config_candidates = [
            root_dir / "config.example.yml",
            root_dir / "config.yml",
        ]
    else:
        config_candidates = [root_dir / "config.yml"]

    config_path = next((path for path in config_candidates if path.exists()), None)
    if config_path is None:
        if demo:
            logger.error("Neither config.example.yml nor config.yml was found.")
        else:
            logger.error("config.yml not found. Copy config.example.yml to config.yml and edit it.")
        sys.exit(1)

    if demo and config_path.name == "config.yml":
        logger.info("Demo mode: config.example.yml not found, falling back to config.yml.")

    with config_path.open("r", encoding="utf-8") as f:
        config = yaml.safe_load(f)

@pedromendes-dev

Copy link
Copy Markdown
Author

Patch validado localmente e também no fork (workflow Generate Profile SVGs com conclusion=success). O PR está CLEAN e pronto para merge. Assim que fizerem merge, a main já fica com a correção de fallback de config no modo demo + comando explícito no workflow.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant