tartrazine/internal/code-generator/main.go

111 lines
3.7 KiB
Go
Raw Normal View History

2017-04-04 11:10:35 +00:00
package main
import (
"io/ioutil"
"log"
2017-04-05 16:26:58 +00:00
"gopkg.in/src-d/simple-linguist.v1/internal/code-generator/generator"
2017-04-04 11:10:35 +00:00
)
const (
// languages info file
languagesYAML = ".linguist/lib/linguist/languages.yml"
// extensions_map.go generation
extensionsFile = "extensions_map.go"
extensionsTmplPath = "internal/code-generator/assets/extensions.go.tmpl"
extensionsTmpl = "extensions.go.tmpl"
2017-04-04 11:10:35 +00:00
2017-04-11 10:10:05 +00:00
// content.go generation
2017-04-04 11:10:35 +00:00
heuristicsRuby = ".linguist/lib/linguist/heuristics.rb"
contentFile = "content.go"
contentTmplPath = "internal/code-generator/assets/content.go.tmpl"
2017-04-04 11:10:35 +00:00
contentTmpl = "content.go.tmpl"
2017-04-11 10:10:05 +00:00
// vendor_matchers.go generation
vendorYAML = ".linguist/lib/linguist/vendor.yml"
vendorFile = "vendor_matchers.go"
vendorTmplPath = "internal/code-generator/assets/vendor.go.tmpl"
vendorTmpl = "vendor.go.tmpl"
2017-04-06 15:31:17 +00:00
2017-04-11 10:10:05 +00:00
// documentation_matchers.go generation
documentationYAML = ".linguist/lib/linguist/documentation.yml"
documentationFile = "documentation_matchers.go"
documentationTmplPath = "internal/code-generator/assets/documentation.go.tmpl"
documentationTmpl = "documentation.go.tmpl"
2017-04-11 10:10:05 +00:00
// type.go generation
typeFile = "types_map.go"
typeTmplPath = "internal/code-generator/assets/types.go.tmpl"
typeTmpl = "types.go.tmpl"
2017-04-11 09:26:23 +00:00
// interpreters_map.go generation
interpretersFile = "interpreters_map.go"
interpretersTmplPath = "internal/code-generator/assets/interpreters.go.tmpl"
interpretersTmpl = "interpreters.go.tmpl"
// filenames_map.go generation
filenamesFile = "filenames_map.go"
filenamesTmplPath = "internal/code-generator/assets/filenames.go.tmpl"
filenamesTmpl = "filenames.go.tmpl"
// aliases_map.go generation
aliasesFile = "aliases_map.go"
aliasesTmplPath = "internal/code-generator/assets/aliases.go.tmpl"
aliasesTmpl = "aliases.go.tmpl"
2017-05-25 10:33:26 +00:00
// frequencies.go generation
samplesDir = ".linguist/samples"
frequenciesFile = "frequencies.go"
frequenciesTmplPath = "internal/code-generator/assets/frequencies.go.tmpl"
frequenciesTmpl = "frequencies.go.tmpl"
commitPath = ".linguist/.git/refs/heads/master"
2017-04-04 11:10:35 +00:00
)
2017-04-11 09:26:23 +00:00
type generatorArgs struct {
fileToParse string
outPath string
tmplPath string
tmplName string
commit string
generate generator.Func
}
2017-04-04 11:10:35 +00:00
func main() {
commit, err := getCommit(commitPath)
if err != nil {
log.Printf("couldn't find commit: %v", err)
}
2017-04-11 09:26:23 +00:00
argsList := []*generatorArgs{
&generatorArgs{languagesYAML, extensionsFile, extensionsTmplPath, extensionsTmpl, commit, generator.Extensions},
2017-04-11 09:26:23 +00:00
&generatorArgs{heuristicsRuby, contentFile, contentTmplPath, contentTmpl, commit, generator.Heuristics},
&generatorArgs{vendorYAML, vendorFile, vendorTmplPath, vendorTmpl, commit, generator.Vendor},
&generatorArgs{documentationYAML, documentationFile, documentationTmplPath, documentationTmpl, commit, generator.Documentation},
&generatorArgs{languagesYAML, typeFile, typeTmplPath, typeTmpl, commit, generator.Types},
&generatorArgs{languagesYAML, interpretersFile, interpretersTmplPath, interpretersTmpl, commit, generator.Interpreters},
&generatorArgs{languagesYAML, filenamesFile, filenamesTmplPath, filenamesTmpl, commit, generator.Filenames},
&generatorArgs{languagesYAML, aliasesFile, aliasesTmplPath, aliasesTmpl, commit, generator.Aliases},
2017-04-06 15:31:17 +00:00
}
2017-04-11 09:26:23 +00:00
for _, args := range argsList {
if err := generator.FromFile(args.fileToParse, args.outPath, args.tmplPath, args.tmplName, args.commit, args.generate); err != nil {
log.Println(err)
}
}
2017-05-25 10:33:26 +00:00
if err := generator.Frequencies(samplesDir, frequenciesTmplPath, frequenciesTmpl, commit, frequenciesFile); err != nil {
log.Println(err)
}
2017-04-04 11:10:35 +00:00
}
func getCommit(path string) (string, error) {
commit, err := ioutil.ReadFile(path)
if err != nil {
return "", err
}
return string(commit), nil
}