43 lines
1.5 KiB
Markdown
43 lines
1.5 KiB
Markdown
# Docreflect
|
|
|
|
Library and command to help accessing go doc comments during runtime.
|
|
|
|
Go doc comments are not accessible during runtime via reflection. To make them avaiable during runtime, we need
|
|
to capture them during build time. The docreflect command, or the docreflect/generate library package, fetches
|
|
the go doc comments of the specified declarations, and generates Go code that registers the docs for every
|
|
declaration. Code that includes the generated initialization code, will have the docs accessible via the top
|
|
level docreflect package methods.
|
|
|
|
**Declarations:**
|
|
|
|
- the declarations must be absolute Go paths
|
|
- when passing in the import path of a package, all the top level symbols of the package, plus the struct fields
|
|
and methods of the top level types will be included
|
|
- the package documentation can be fetched using `docreflect.Docs("absolute/import/path/of/package")`
|
|
- when passing in the import path of only the selected symbols, the rest of the package level symbols will be
|
|
ignroed
|
|
|
|
**Gotchas:**
|
|
|
|
- type aliases and type definitions based on named types are not resolved
|
|
- package imports are not resolved, necessary packages need to be included in the generate arguments
|
|
|
|
Library documentation: https://godocs.io/code.squareroundforest.org/arpio/docreflect
|
|
|
|
To insall the docreflect command, run:
|
|
|
|
```
|
|
make install
|
|
```
|
|
|
|
Usage of the docreflect command:
|
|
|
|
```
|
|
docreflect generate \
|
|
--package-name mypackage \
|
|
coderepos.org/jdoe/mypackage coderepos.org/jdoe/otherpackage \
|
|
> docreflect.go
|
|
```
|
|
|
|
*Made in Berlin, DE*
|