package generator import ( "os" "path" "path/filepath" "strings" ) // todo: transform this to use concurrency func Generate(namespace string, features []Feature, outputDirectory string) error { for _, feature := range features { file, err := feature.Emit() if err != nil { return err } path := path.Join(outputDirectory, namespace, strings.ReplaceAll(file.Path, "%namespace%",namespace)) if err := writeFile(path, file.Content); err != nil { return err } } return nil } func writeFile(path string, content []byte) error { if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil { return err } file, err := os.Create(path) if err != nil { return err } defer file.Close() _, err = file.Write(content) if err != nil { return err } return nil }