dagger-codegen

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Dagger Codegen

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
  • 编辑
    dagger.gen.go
    internal/dagger/dagger.gen.go
    的输出文件
  • 修改
    cmd/codegen/generator/go/templates/
    目录下的Go模板
  • 更改
    core/sdk.go
    中的SDK接口
  • 开发
    dagger develop
    dagger call
    dagger client install
    功能
  • 调试生成代码异常的原因

Critical Concepts

核心概念

"Codegen" means 4 different things in Dagger:
#NameTriggerKey Files
1In-Module Bindings
dagger develop
cmd/codegen/generator/go/templates/
2Runtime DispatchModule startup
cmd/codegen/generator/go/templates/modules.go:140
3SDK Libraries
go generate
sdk/go/generate.go
4Generated Clients
dagger client install
_dagger.gen.go/client.go.tmpl
Know which one you're dealing with before editing.
在Dagger中,"Codegen"指代4种不同的内容:
序号名称触发条件关键文件
1模块内绑定
dagger develop
cmd/codegen/generator/go/templates/
2运行时分发模块启动
cmd/codegen/generator/go/templates/modules.go:140
3SDK库
go generate
sdk/go/generate.go
4生成客户端
dagger client install
_dagger.gen.go/client.go.tmpl
在编辑前,请先明确你要处理的是哪一种Codegen。

Key Entry Points

关键入口点

To change...Edit
Generated method signatures
cmd/codegen/generator/go/templates/src/_types/object.go.tmpl
Generated type definitions
cmd/codegen/generator/go/templates/src/_types/*.go.tmpl
Module
invoke()
dispatch
cmd/codegen/generator/go/templates/modules.go:140
Standalone client
Connect()
cmd/codegen/generator/go/templates/src/_dagger.gen.go/client.go.tmpl
Template functions
cmd/codegen/generator/go/templates/functions.go:54
SDK interfaces
core/sdk.go:20
(ClientGenerator),
:93
(CodeGenerator)
Built-in SDK list
core/sdk/consts.go
Python output
sdk/python/codegen/src/codegen/generator.py
要修改的内容...编辑位置
生成的方法签名
cmd/codegen/generator/go/templates/src/_types/object.go.tmpl
生成的类型定义
cmd/codegen/generator/go/templates/src/_types/*.go.tmpl
模块
invoke()
分发逻辑
cmd/codegen/generator/go/templates/modules.go:140
独立客户端
Connect()
cmd/codegen/generator/go/templates/src/_dagger.gen.go/client.go.tmpl
模板函数
cmd/codegen/generator/go/templates/functions.go:54
SDK接口
core/sdk.go:20
(ClientGenerator)、
:93
(CodeGenerator)
内置SDK列表
core/sdk/consts.go
Python输出
sdk/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
internals
generated-clients.md
根据具体需求加载:
需求加载文件
理解4种Codegen类型codegen-types.md
SDK架构、接口、Go特殊情况sdk-architecture.md
Go模板条件判断、两轮生成机制go-templates.md
dagger client install
内部实现
generated-clients.md