Skip to content

Commit

Permalink
(template): WIP: Inital version. Updates #45
Browse files Browse the repository at this point in the history
  • Loading branch information
KevinGimbel committed Jun 1, 2017
1 parent 9eb9019 commit 4f9d978
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 0 deletions.
6 changes: 6 additions & 0 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ var limitFlag = flag.IntP("limit", "l", 10, "limits rows up to n")
var formatFlag = flag.StringP("format", "f", "", "generators rows in f format. Available formats: csv|tab|sql")
var versionFlag = flag.BoolP("version", "v", false, "shows version information")
var tableFlag = flag.StringP("table", "t", "TABLE", "table name of the sql format")
var templateFlag = flag.StringP("template", "", "", "Use template")

func getFormatter(format string) (f fakedata.Formatter) {
switch format {
Expand Down Expand Up @@ -64,6 +65,11 @@ func main() {
os.Exit(0)
}

if *templateFlag != "" {
fakedata.ParseTemplate(*templateFlag)
os.Exit(0)
}

if len(flag.Args()) == 0 {
flag.Usage()
os.Exit(0)
Expand Down
67 changes: 67 additions & 0 deletions pkg/fakedata/template.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package fakedata

import (
"fmt"
"html/template"
"os"
"strings"
)

var fakeColumn = Column{"Fake", "fakecolumn", ""}

var generatorFunctions = template.FuncMap{
"Name": func() string {
return generators["name"].Func(fakeColumn)
},
"Email": func() string {
return generators["email"].Func(fakeColumn)
},
"Int": func(a, b int) string {
return generators["int"].Func(Column{"Int", "int", fmt.Sprintf("%d..%d", a, b)})
},
"Enum": func(keywords ...string) string {
constraints := createConstraints(keywords)
return generators["enum"].Func(Column{"Enum", "enu", constraints})
},
"Generator": func(name string) string {
return generators[name].Func(fakeColumn)
},
"Loop": func(i int) []int {
c := make([]int, i)

return c
},
"Odd": func(i int) bool {
if i%2 != 0 {
return true
}
return false
},
"Even": func(i int) bool {
if i%2 == 0 {
return true
}
return false
},
}

func createConstraints(params []string) string {
return strings.Join(params, "..")
}

func getTemplateNameFromPath(name string) string {
ts := strings.Split(name, "/")
tn := ts[len(ts)-1]
return tn
}

func ParseTemplate(path string) {
tn := getTemplateNameFromPath(path)
tmp, err := template.New(tn).Funcs(generatorFunctions).ParseFiles(path)
if err != nil {
fmt.Println(err)
}

tmp.Execute(os.Stdout, generators)

}

0 comments on commit 4f9d978

Please sign in to comment.