Skip to content

feat(config): adicionar suporte a arquivo de configuracao .envguard.yaml e flag --config - #24

Merged
joaooncode merged 2 commits into
mainfrom
feat/config-file-support
Sep 2, 2026
Merged

feat(config): adicionar suporte a arquivo de configuracao .envguard.yaml e flag --config#24
joaooncode merged 2 commits into
mainfrom
feat/config-file-support

Conversation

@joaooncode

@joaooncode joaooncode commented Sep 2, 2026

Copy link
Copy Markdown
Owner

Descrição

Implementa o suporte completo a arquivo de configuração (.envguard.yaml e .envguard.yml) e à flag de linha de comando --config (-c) para os comandos scan e check.

Permite que os projetos personalizem o comportamento da ferramenta através da definição de diretórios ignorados customizados, padrões de nomes de arquivos de ambiente adicionais, regras de allowlist/templates seguros e sobrescritas de níveis de severidade.

Closes #15


Tipo de Alteração

  • feat: Nova funcionalidade
  • fix: Correção de bug
  • refactor: Refatoração de código sem alteração no comportamento
  • perf: Melhoria de performance
  • docs: Alteração ou adição na documentação
  • style: Formatação, linting, imports (sem mudança de lógica)
  • test: Adição ou ajuste de testes automatizados
  • chore: Dependências, scripts ou configurações gerais

Alterações Realizadas

  • Novo pacote internal/config:
    • Structs de configuração com tags YAML (Config, ScannerConfig, DetectorConfig, SeverityOverride).
    • Parsing estrito utilizando gopkg.in/yaml.v3 com validação semântica (fail-fast para chaves desconhecidas ou sintaxe incorreta).
    • Descoberta automática de arquivos seguindo a precedência: flag --config > .envguard.yaml > .envguard.yml > defaults embutidos.
  • Módulo internal/detector:
    • Suporte a detecção de padrões customizados (custom_patterns) e expansão de allowlists.
  • Módulo internal/scanner:
    • Suporte a diretórios ignorados adicionais (scanner.ignore_dirs) combinados com os padrões seguros.
    • Aplicação de sobrescrita de severidade (severity_overrides) na classificação de cada finding.
  • Módulo internal/cli:
    • Flags --config e -c adicionadas aos comandos scan e check.
  • Testes & Documentação:
    • Testes unitários e de integração completos em internal/config, internal/detector, internal/scanner e internal/cli.
    • Documentação de domínio em CONTEXT.md e decisão arquitetural em docs/adr/0001-yaml-configuration-support.md.

Como Testar

  1. Executar a suíte de testes automatizados:
    go test -v ./...
  2. Testar auto-descoberta de .envguard.yaml:
    • Crie um arquivo .envguard.yaml na raiz de um projeto de teste:
      version: "1"
      detector:
        allowlist:
          - ".env.custom.sample"
        custom_patterns:
          - "*.env.vault"
    • Execute ./envguard scan --path . e verifique se .env.custom.sample é classificado como INFO e *.env.vault é detectado.
  3. Testar flag explícita --config:
    ./envguard check --path . --config custom-rules.yaml
  4. Testar tratamento de erro de sintaxe/schema:
    • Crie um arquivo YAML com sintaxe inválida ou chaves desconhecidas e execute scan/check. O envguard deve retornar erro de uso e encerrar imediatamente.

Checklist do Contribuinte (Pré-Envio)

  • Revi as minhas alterações com git diff e git status.
  • Garanti que nenhum arquivo sensível, segredo (.env), token ou arquivo temporário foi comitado.
  • O código segue os padrões de formatação (gofmt -s -w . e .editorconfig).
  • Os testes automatizados e builds estão passando localmente (go test ./... e go build ./...).
  • As mensagens de commit seguem o padrão Conventional Commits.

Breaking Changes / Observações

  • Nenhuma breaking change.
  • Observações: Compatibilidade retroativa 100% preservada para projetos que não utilizam arquivo de configuração.

…aml e flag --config

- adiciona pacote internal/config com parsing estrito YAML e validacao
- suporta ordem de descoberta: flag --config > .envguard.yaml > .envguard.yml > padroes embutidos
- permite configurar ignore_dirs, custom_patterns, allowlist e severity_overrides
- integra configuracoes aos modulos scanner, detector e comandos da CLI
- adiciona testes unitarios e de integracao completos

Closes #15
@joaooncode joaooncode added enhancement New feature or request core Core engine, scanning, and detectors labels Sep 2, 2026
@joaooncode
joaooncode merged commit 0e4726c into main Sep 2, 2026
6 checks passed
@joaooncode
joaooncode deleted the feat/config-file-support branch September 2, 2026 03:01
@joaooncode joaooncode self-assigned this Sep 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

core Core engine, scanning, and detectors enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(config): Implementar suporte a arquivo de configuracao .envguard.yaml

1 participant