MCPcopy Index your code
hub / github.com/dagger/dagger / addTemplate

Method addTemplate

sdk/java/runtime/main.go:196–248  ·  view source on GitHub ↗

addTemplate creates all the necessary files to start a new Java module

(
	ctx context.Context,
	ctr *dagger.Container,
)

Source from the content-addressed store, hash-verified

194
195// addTemplate creates all the necessary files to start a new Java module
196func (m *JavaSdk) addTemplate(
197 ctx context.Context,
198 ctr *dagger.Container,
199) (*dagger.Container, error) {
200 name := m.moduleConfig.name
201 pkgName := strings.ReplaceAll(strings.ReplaceAll(strings.ToLower(name), "-", ""), "_", "")
202 kebabName := strcase.ToKebab(name)
203 camelName := strcase.ToCamel(name)
204
205 // Check if there's a pom.xml inside the module path. If a file exist, no need to add the templates
206 if _, err := ctr.File(filepath.Join(m.moduleConfig.modulePath(), "pom.xml")).Name(ctx); err == nil {
207 return ctr, nil
208 }
209
210 absPath := func(rel ...string) string {
211 return filepath.Join(append([]string{m.moduleConfig.modulePath()}, rel...)...)
212 }
213
214 changes := []repl{
215 {"dagger-module-placeholder", kebabName},
216 {"daggermoduleplaceholder", pkgName},
217 }
218
219 // Edit template content so that they match the dagger module name
220 templateDir := dag.CurrentModule().Source().Directory("template")
221 pomXML, err := m.replace(ctx, templateDir,
222 "pom.xml", changes...)
223 if err != nil {
224 return ctr, fmt.Errorf("could not add template: %w", err)
225 }
226
227 changes = append(changes, repl{"DaggerModule", camelName})
228 daggerModuleJava, err := m.replace(ctx, templateDir,
229 filepath.Join("src", "main", "java", "io", "dagger", "modules", "daggermodule", "DaggerModule.java"),
230 changes...)
231 if err != nil {
232 return ctr, fmt.Errorf("could not add template: %w", err)
233 }
234 packageInfoJava, err := m.replace(ctx, templateDir,
235 filepath.Join("src", "main", "java", "io", "dagger", "modules", "daggermodule", "package-info.java"),
236 changes...)
237 if err != nil {
238 return ctr, fmt.Errorf("could not add template: %w", err)
239 }
240
241 // And copy them to the container, renamed to match the dagger module name
242 ctr = ctr.
243 WithNewFile(absPath("pom.xml"), pomXML).
244 WithNewFile(absPath("src", "main", "java", "io", "dagger", "modules", pkgName, fmt.Sprintf("%s.java", camelName)), daggerModuleJava).
245 WithNewFile(absPath("src", "main", "java", "io", "dagger", "modules", pkgName, "package-info.java"), packageInfoJava)
246
247 return ctr, nil
248}
249
250// generateCode builds and returns the generated source code and java classes
251func (m *JavaSdk) generateCode(

Callers 1

codegenBaseMethod · 0.95

Calls 9

replaceMethod · 0.95
NameMethod · 0.65
FileMethod · 0.65
DirectoryMethod · 0.65
CurrentModuleMethod · 0.65
absPathFunction · 0.50
modulePathMethod · 0.45
SourceMethod · 0.45
WithNewFileMethod · 0.45

Tested by

no test coverage detected