Back to Dagger

Dagger Codegen

skills/dagger-codegen/SKILL.md

0.20.72.0 KB
Original Source

Dagger Codegen

When to Load This Skill

  • Editing dagger.gen.go or internal/dagger/dagger.gen.go output
  • Modifying Go templates in cmd/codegen/generator/go/templates/
  • Changing SDK interfaces in core/sdk.go
  • Working on dagger develop, dagger call, or dagger client install
  • Debugging why generated code looks wrong

Critical Concepts

"Codegen" means 4 different things in Dagger:

#NameTriggerKey Files
1In-Module Bindingsdagger developcmd/codegen/generator/go/templates/
2Runtime DispatchModule startupcmd/codegen/generator/go/templates/modules.go:140
3SDK Librariesgo generatesdk/go/generate.go
4Generated Clientsdagger client install_dagger.gen.go/client.go.tmpl

Know which one you're dealing with before editing.

Key Entry Points

To change...Edit
Generated method signaturescmd/codegen/generator/go/templates/src/_types/object.go.tmpl
Generated type definitionscmd/codegen/generator/go/templates/src/_types/*.go.tmpl
Module invoke() dispatchcmd/codegen/generator/go/templates/modules.go:140
Standalone client Connect()cmd/codegen/generator/go/templates/src/_dagger.gen.go/client.go.tmpl
Template functionscmd/codegen/generator/go/templates/functions.go:54
SDK interfacescore/sdk.go:20 (ClientGenerator), :93 (CodeGenerator)
Built-in SDK listcore/sdk/consts.go
Python outputsdk/python/codegen/src/codegen/generator.py

Reference Files

Load based on specific need:

NeedLoad
Understanding the 4 codegen typescodegen-types.md
SDK architecture, interfaces, Go special casesdk-architecture.md
Go template conditionals, two-pass generationgo-templates.md
dagger client install internalsgenerated-clients.md