Skip to content

feat(cli): Implementar comando envguard init para inicializacao de configuracao e templates #16

Closed

Description

@joaooncode

Contexto & Requisitos

Implementar o subcomando \�nvguard init\ para agilizar o setup de novos projetos, gerando o arquivo de configuracao padrao .envguard.yaml\ comentado e oferecendo a opcao de gerar templates seguros .env.example\ a partir de variaveis detectadas (com valores limpos).


Tarefas

  • Implementar subcomando \init\ na CLI com suporte a flags (--force, --template).
  • Gerar arquivo .envguard.yaml\ com comentarios explicativos e padroes de seguranca recomendados.
  • Implementar geracao de .env.example\ sanitizado (mantendo chaves, removendo todos os valores sensiveis).
  • Tratar com seguranca cenarios onde arquivos ja existem, solicitando confirmacao ou exigindo --force.
  • Adicionar testes unitarios para a CLI e testes de geracao de arquivos.

Activity

  1. added this to the v0.2.0 milestone on Aug 30, 2026
  2. joaooncode commented on Sep 2, 2026

    @joaooncode
    OwnerAuthor

    Especificação Técnica: Subcomando envguard init e Geração de Templates

    1. Visão Geral

    Adição do subcomando init ao �nvguard para inicializar repositórios com o arquivo de configuração .envguard.yaml (comentado e com regras de segurança recomendadas) e, opcionalmente, gerar um template seguro .env.example sanitizado a partir de variáveis locais.

    2. Interface da CLI

    bash envguard init [flags]

    Flags suportadas:

    • -p, --path : Diretório destino para criação dos arquivos (default: ".").
    • -f, --force: Força sobrescrita de arquivos pré-existentes (.envguard.yaml, .env.example).
    • -t, --template: Gera o arquivo de template .env.example.
    • --template-from : Caminho para o arquivo .env fonte a ser sanitizado (opcional; se omitido, procura .env no diretório alvo; se não existir, gera boilerplate seguro).
    • -h, --help: Exibe instruções de ajuda do subcomando init.

    3. Camadas e Arquitetura

    1. Pacote internal/initializer:

      • SanitizeEnv(r io.Reader) string: Extrai chaves e comentários preservando a estrutura visual, esvaziando todos os valores para KEY=.
      • GenerateConfig(targetDir string, force bool) error: Escreve .envguard.yaml comentado com seções explicativas para �ersion, scanner.ignore_dirs, detector.custom_patterns, detector.allowlist e detector.severity_overrides.
      • GenerateTemplate(targetDir, sourceEnvPath string, force bool) error: Gera .env.example sanitizado ou padrão.
      • Proteção de colisões de arquivo com erro explícito na ausência de --force.
    2. Pacote internal/cli:

      • Adiciona init ao roteador de comandos em cli.go.
      • Implementa
        unInitCommand(args []string, stdout, stderr io.Writer) int.
      • Integração das mensagens de ajuda e códigos de saída determinísticos (ExitCodeSuccess, ExitCodeUsageError, ExitCodeGeneralError).

    4. Plano de Validação & TDD

    • Testes unitários do sanitizador e gerador de arquivos em internal/initializer/initializer_test.go.
    • Testes da camada CLI com flags, caminhos relativos/absolutos, flags combinadas e colisões em internal/cli/init_test.go e internal/cli/cli_test.go.
  3. self-assigned this
    on Sep 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestready-for-agentFully specified, ready for an AFK agent

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions