A Minecraft datapack generator written in go.
at predicate 44 lines 843 B view raw
1package generator 2 3import ( 4 "os" 5 "path" 6 "path/filepath" 7 "strings" 8) 9 10// todo: transform this to use concurrency 11func Generate(namespace string, features []Feature, outputDirectory string) error { 12 for _, feature := range features { 13 file, err := feature.Emit() 14 if err != nil { 15 return err 16 } 17 18 path := path.Join(outputDirectory, namespace, strings.ReplaceAll(file.Path, "%namespace%",namespace)) 19 if err := writeFile(path, file.Content); err != nil { 20 return err 21 } 22 } 23 return nil 24} 25 26func writeFile(path string, content []byte) error { 27 if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil { 28 return err 29 } 30 31 file, err := os.Create(path) 32 if err != nil { 33 return err 34 } 35 36 defer file.Close() 37 38 _, err = file.Write(content) 39 if err != nil { 40 return err 41 } 42 43 return nil 44}