Inspect your app
dygo routes # METHOD PATH HANDLER INPUT OUTPUT, sorted by path; -json for toolsdygo graph # modules with imports, exports, providers and what each injectsdygo graph -format mermaid > graph.mmd # or dot, or jsondygo check # wiring errors, exit status 1; nothing is builtdygo info # Go, CLI and framework versions, module and provider countsEach takes an optional main package (default .). They run it with DYGO_INSPECT_OUT set; dygo.Create then writes its graph (and, for routes, its routes) to that file and returns dygo.ErrInspected instead of starting. check, graph and info build nothing. routes builds the providers, because controllers register routes from their instances, but runs no startup hook and opens no port. Whatever main does before dygo.Create, such as loading config, still has to succeed.
For a unit test or CI without the CLI:
func TestWiring(t *testing.T) { if _, err := dygo.Describe(AppModule(&Config{}, slog.New(slog.DiscardHandler))); err != nil { t.Fatal(err) }}