Documentação para pacotes privados

Go tem por padrão uma excelente forma de documentar pacotes, é possível gerar uma documentação detalhada usando apenas comentários no seu código e publicando em um repositório público.

Por exemplo, no código abaixo temos um pacote chamado mw que contém uma interface Middleware com comentário explicando o seu propósito, somente isso já é suficiente para gerar uma documentação.

// Middleware is a type that wraps an http.Handler
type Middleware interface {
	Handle(http.Handler) http.HandlerFunc
}

Veja o resultado: https://pkg.go.dev/github.com/edmarfelipe/mw#Middleware

Repositórios privados

Mas e se o pacote for privado? Como gerar a documentação? infelizmente o pkg.go.dev não consegue acessar repositórios privados e para usar o godoc é necessário rodar um servidor HTTP.

Para resolver esse problema de forma simples, podemos usar o gomarkdoc , que é uma command line que gera documentação em markdown a partir de comentários no código e não é possível.

Já que em todos os git hosts é possível visualizar arquivos markdown, podemos adicionar a documentação gerada no repositório e quem tiver acesso ao repositório poderá visualizar a documentação.

Como usar?

Para instalar é só rodar o comando:

go install github.com/princjef/gomarkdoc/cmd/gomarkdoc@latest

E para gerar a documentação só é necessário executar o comando dessa forma:

gomarkdoc --output doc.md .

Onde --output é o arquivo de saída e . é o diretório onde está o código.

o resultado será um arquivo markdown com a documentação do pacote. por exemplo: doc.md

Conclusão

Com o gomarkdoc é possível gerar documentação para pacotes privados sem precisar de investir em uma solução mais complexa, como um servidor de documentação.

Por hoje é isso, espero que tenha gostado. Até a próxima!