From 632422db69aaba474a56a8f0aa416cbb1d1662fc Mon Sep 17 00:00:00 2001 From: David Paz Date: Mon, 10 Jul 2017 13:05:04 +0200 Subject: [PATCH] Added pending untracked files --- internal/code-generator/assets/mime.go.tmpl | 11 +++++ internal/code-generator/generator/mime.go | 53 +++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 internal/code-generator/assets/mime.go.tmpl create mode 100644 internal/code-generator/generator/mime.go diff --git a/internal/code-generator/assets/mime.go.tmpl b/internal/code-generator/assets/mime.go.tmpl new file mode 100644 index 0000000..d8dcff3 --- /dev/null +++ b/internal/code-generator/assets/mime.go.tmpl @@ -0,0 +1,11 @@ +package data + +// CODE GENERATED AUTOMATICALLY WITH gopkg.in/src-d/enry.v1/internal/code-generator +// THIS FILE SHOULD NOT BE EDITED BY HAND +// Extracted from github/linguist commit: {{ getCommit }} + +var LanguagesMime = map[string]string{ + {{range $language, $mime := . -}} + "{{$language}}": "{{$mime -}}", + {{end -}} +} diff --git a/internal/code-generator/generator/mime.go b/internal/code-generator/generator/mime.go new file mode 100644 index 0000000..91e88f8 --- /dev/null +++ b/internal/code-generator/generator/mime.go @@ -0,0 +1,53 @@ +package generator + +import ( + "bytes" + "html/template" + "io" + "io/ioutil" + + yaml "gopkg.in/yaml.v2" +) + +func Mime(fileToParse, samplesDir, outPath, tmplPath, tmplName, commit string) error { + data, err := ioutil.ReadFile(fileToParse) + if err != nil { + return err + } + + languages := make(map[string]*languageInfo) + if err := yaml.Unmarshal(data, &languages); err != nil { + return err + } + + langMimeMap := buildLanguageMimeMap(languages) + + buf := &bytes.Buffer{} + if err := executeMimeTemplate(buf, langMimeMap, tmplPath, tmplName, commit); err != nil { + return err + } + + return formatedWrite(outPath, buf.Bytes()) +} + +func buildLanguageMimeMap(languages map[string]*languageInfo) map[string]string { + langMimeMap := make(map[string]string) + for lang, info := range languages { + langMimeMap[lang] = info.MimeType + } + + return langMimeMap +} + +func executeMimeTemplate(out io.Writer, langMimeMap map[string]string, tmplPath, tmplName, commit string) error { + fmap := template.FuncMap{ + "getCommit": func() string { return commit }, + } + + t := template.Must(template.New(tmplName).Funcs(fmap).ParseFiles(tmplPath)) + if err := t.Execute(out, langMimeMap); err != nil { + return err + } + + return nil +}