addTemplate creates all the necessary files to start a new Java module
( ctx context.Context, ctr *dagger.Container, )
| 194 | |
| 195 | // addTemplate creates all the necessary files to start a new Java module |
| 196 | func (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 |
| 251 | func (m *JavaSdk) generateCode( |
no test coverage detected