diff --git a/internal/generator/generator.go b/internal/generator/generator.go index 589adb6..3d67e26 100644 --- a/internal/generator/generator.go +++ b/internal/generator/generator.go @@ -1,7 +1,7 @@ package generator import ( - "os" + "bytes" "fmt" @@ -26,13 +26,13 @@ func (g *Generator) GenerateDNS(config *configurator.Config) { // TODO: print generated config file to STDOUT } -func (g *Generator) GenerateDHCP(config *configurator.Config, eths []configurator.EthernetInterface) error { +func (g *Generator) GenerateDHCP(config *configurator.Config, eths []configurator.EthernetInterface) ([]byte, error) { // generate file using gonja template path := config.TemplatePaths[g.Template] fmt.Printf("path: %s\neth count: %v\n", path, len(eths)) t, err := gonja.FromFile(path) if err != nil { - return fmt.Errorf("failed to read template from file: %v", err) + return nil, fmt.Errorf("failed to read template from file: %v", err) } template := "# ========== GENERATED BY OCHAMI CONFIGURATOR ==========\n" for _, eth := range eths { @@ -46,9 +46,10 @@ func (g *Generator) GenerateDHCP(config *configurator.Config, eths []configurato data := exec.NewContext(map[string]any{ "hosts": template, }) - if err = t.Execute(os.Stdout, data); err != nil { - return fmt.Errorf("failed to execute: %v", err) + b := bytes.Buffer{} + if err = t.Execute(&b, data); err != nil { + return nil, fmt.Errorf("failed to execute: %v", err) } - return nil + return b.Bytes(), nil } diff --git a/internal/server/server.go b/internal/server/server.go index b632ff3..6d3c324 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -86,12 +86,13 @@ func (s *Server) Start(config *configurator.Config) error { } // generate a new config from that data - err = g.GenerateDHCP(config, eths) + b, err := g.GenerateDHCP(config, eths) if err != nil { logrus.Errorf("failed to generate DHCP: %v", err) w.Write([]byte("An error has occurred.")) return } + w.Write(b) } }) r.HandleFunc("/templates", func(w http.ResponseWriter, r *http.Request) {