github.com/mcuadros/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  }