github.com/rohankumardubey/go-enry@v1.7.3/internal/code-generator/generator/mimeType.go (about) 1 package generator 2 3 import ( 4 "bytes" 5 "io" 6 "io/ioutil" 7 8 "gopkg.in/yaml.v2" 9 ) 10 11 // MimeType generates a map in Go with language name -> MIME string. 12 // It is of generator.File type. 13 func MimeType(fileToParse, samplesDir, outPath, tmplPath, tmplName, commit string) error { 14 data, err := ioutil.ReadFile(fileToParse) 15 if err != nil { 16 return err 17 } 18 19 languages := make(map[string]*languageInfo) 20 if err := yaml.Unmarshal(data, &languages); err != nil { 21 return err 22 } 23 24 langMimeMap := buildLanguageMimeMap(languages) 25 26 buf := &bytes.Buffer{} 27 if err := executeMimeTemplate(buf, langMimeMap, tmplPath, tmplName, commit); err != nil { 28 return err 29 } 30 31 return formatedWrite(outPath, buf.Bytes()) 32 } 33 34 func buildLanguageMimeMap(languages map[string]*languageInfo) map[string]string { 35 langMimeMap := make(map[string]string) 36 for lang, info := range languages { 37 if len(info.MimeType) != 0 { 38 langMimeMap[lang] = info.MimeType 39 } 40 } 41 42 return langMimeMap 43 } 44 45 func executeMimeTemplate(out io.Writer, langMimeMap map[string]string, tmplPath, tmplName, commit string) error { 46 return executeTemplate(out, tmplName, tmplPath, commit, nil, langMimeMap) 47 }